screen命令

Zss 发表于:

终端自由切换的命令,似乎默认的Centos7没有自带,那么安装一下,yum install screen

平常在使用类似于ping,top,iostat这种实时刷新显示的命令时,想让他后台运行,但是需要再次调出来呢?

我想到的办法似乎只有重新开一个shell对话框来使用,这时候使用screen可以很好的解决这种情况

总结一下常用的这几个命令:

1.创建一个新的终端,screen -S test1

-S后面接终端的名字,这个名字用来区分不同的终端,也可以使用名字来返回到这个终端,理解成这个终端的一个名字一个标记吧

那么此时产生了一个新的终端,使用一条shell命令来测试它的后台运行,for i in `seq 100`;do echo ${i};sleep 1;done,产生一个1一百的数一次打印,每秒打印一次

2.后台运行终端并退出此界面,Ctrl+a+d

此时后台运行

3.查看当前的终端窗口,screen -ls

[root@izwz9edjck5sjotul6vfy6z ~]# screen -ls
There are screens on:
16584.test1 (Detached)
Remove dead screens with ‘screen -wipe’.
1 Sockets in /var/run/screen/S-root.

当前一个后台运行的终端窗口,名字为test1,进程号为16584

4.返回某个终端窗口,screen -x 进程号或者名字   screen -r 进程号或者名字    这两个似乎是一样的

返回后看到确实在后台运行

5.在终端中 exit  可以结束此终端窗口   或者直接 kill 掉此进程号

当直接kill掉进程号后,使用-ls查看到的对话框还是存在,但是无法进入了,所以使用-wipe来清除掉不能使用但存在的对话框

所以我觉得还是用exit来将不使用的对话框正确退出吧,直接kill掉的似乎会残留信息,像我这种根本看不得这上面有不能运行的对话框还没清除掉 —_—!!

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或--list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业

在每个screen session 下,所有命令都以 ctrl+a(C-a) 开始。

C-a ? -> 显示所有键绑定信息
C-a c -> 创建一个新的运行shell的窗口并切换到该窗口
C-a n -> Next,切换到下一个 window 
C-a p -> Previous,切换到前一个 window 
C-a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
C-a C-a -> 在两个最近使用的 window 间切换 
C-a x -> 锁住当前的 window,需用用户密码解锁
C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 
C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
C-a w -> 显示所有窗口列表
C-a t -> time,显示当前时间,和系统的 load 
C-a k -> kill window,强行关闭当前的 window
C-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
    C-b Backward,PageUp 
    C-f Forward,PageDown 
    H(大写) High,将光标移至左上角 
    L Low,将光标移至左下角 
    0 移到行首 
    $ 行末 
    w forward one word,以字为单位往前移 
    b backward one word,以字为单位往后移 
    Space 第一次按为标记区起点,第二次按为终点 
    Esc 结束 copy mode 
C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上