Linux运维利器screen

通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为它们执行的时间太长了。必须等待它们执行完毕,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了

GNU Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

会话恢复

只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。

多窗口

在 Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个 窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,可以查看窗口状况的历史记录。窗口还可以被分区和命名, 还可以监视后台窗口的活动。

会话共享

Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

语法

# screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-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参数

  screen -S yourname -> 新建一个叫yourname的session
  screen -ls -> 列出当前所有的session
  screen -r yourname -> 回到yourname这个session
  screen -d yourname -> 远程detach某个session
  screen -d -r yourname -> 结束当前session并回到yourname这个session

安装使用
 
root@MyServer:~# sudo apt-get install screen //Ubuntu安装方式
 root@MyServer:~# yum install screen        //Centos安装方式
创建新的session会话,进入后就可以进行常用的操作,关闭终端也不受影响
root@MyServer:~# root@MyServer:~# screen -S test
下次登录Linux时,通过screen -ls 查询当前所有的session会话,然后切换到会话

root@MyServer:~# screen -ls
There is a screen on:
    5984.test   (Saturday, July 02, 2016 07:30:18 CST) (Detached)
1 Socket in /var/run/screen/S-root.

root@MyServer:~# screen -r 5984


注意切换时可能会遇到一种情况:

如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了。

这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:

root@MyServer:~# screen -r 18121
There is a screen on:
    18121.test   (Saturday, July 02, 2016 07:35:18 CST) (Attached)
There is no screen to be resumed matching 18121.
root@MyServer:~# screen -d
[18121.test detached.]

root@MyServer:~# screen - r 18121
root@MyServer:~#
  • 发布时间:2019-04-04