Linux 命令- screen

        screen命令用于多重视窗管理程序。

        screen为多重视窗管理程序。所谓的视窗,是指一个全屏幕的文字模式画面。通常只有在使用telnet登入主机或是使用老式终端机时,才有可能用到screen程序。

        有时候,也许会有这样的需求。要执行一个命令或者脚本,但是需要几个小时甚至几天。这就要考虑一个问题,就是中途断网或出现其他意外情况,执行的任务中断了怎么办?可以把命令或者脚本丢到后台运行,不过也不保险。screen可以避免这样的问题发生。

        screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个窗口中就想操作一个真实的SSH连接窗口那样。

命令语法

1
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s <shell>][-S <作业名称>]

命令参数

  • -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命令需先安装

1
yum install -y screen

        创建screen终端

1
[root@localhost ~]# screen

        创建 screen 终端 ,并执行 vi命令

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# screen vi ~/main.c
#include
main ()
{
}
"~/mail.c" 0,0-1

         Ctrl+a 再按d键,退出该screen回话,只是退出,并没有结束。需要结束的话输入 Ctrl+d 或者输入 exit

         screen -ls 查看已经打开的screen会话

1
2
3
[root@localhost ~]# screen -ls
There is a screen on:
20001.pts-0.localhost (Attached)

        退出后还想再次登录某个screen会话,使用 sreen -r [screen编号] ,这个编号就是上例中那个20001.当只有一个screen会话时,后面的编号是可以省略的。当有某个需要长时间运行的命令或者脚本时就打开一个screen会话,然后运行该任务。按 ctrl+a d退出会话,不影响终端窗口上的任何操作。

        创建新的screen是可以指定自定义名称的

1
[root@localhost ~]# screen -S yanyi

        要想进入该screen,可以直接

1
screen -r yanyi

screen源码编译安装

1
2
3
4
5
6
7
8
[root@host1 src]# wget ftp://ftp.gnu.org/pub/gnu/screen/screen-4.0.3.tar.gz
[root@host1 src]# tar -xvf screen-4.0.3.tar.gz
[root@host1 src]# cd screen-4.0.3
[root@host1 screen-4.0.2]# ./configure
[root@host1 screen-4.0.2]# make
[root@host1 screen-4.0.2]# make install
[root@host1 screen-4.0.2]# install -m 644 etc/etcscreenrc /etc/screenrc
[root@host1 screen-4.0.2]# cp ./screen /bin

        注意和一般程序的安装过程有所不同,后面两条命令一定要执行。