screen是一款能够实现多窗口远程控制的开源服务程序,简单来说就是为了解决网络异常中断或为了同时控制多个远程终端窗口而设计的程序。用户还可以使用screen服务程序同时在多个远程会话中自由切换,能够做到实现如下功能。
会话恢复:即便网络中断,也可让会话随时恢复,确保用户不会失去对远程会话的控制。
多窗口:每个会话都是独立运行的,拥有各自独立的输入输出终端窗口,终端窗口内显示过的信息也将被分开隔离保存,以便下次使用时依然能看到之前的操作记录。
会话共享:当多个用户同时登录到远程服务器时,便可以使用会话共享功能让用户之间的输入输出信息共享。
1.安装
yum -y install screen
[root@newcentos7 ~]# yum -y install screen
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.cn99.com
* extras: mirrors.shu.edu.cn
* updates: mirrors.aliyun.com
正在解决依赖关系
--> 正在检查事务
---> 软件包 screen.x86_64.0.4.1.0-0.25.20120314git3c2946.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================
正在安装:
screen x86_64 4.1.0-0.25.20120314git3c2946.el7 base 552 k
事务概要
==========================================================================================================================================
安装 1 软件包
总下载量:552 k
安装大小:914 k
Downloading packages:
screen-4.1.0-0.25.20120314git3c2946.el7.x86_64.rpm | 552 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64 1/1
验证中 : screen-4.1.0-0.25.20120314git3c2946.el7.x86_64 1/1
已安装:
screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7
完毕!
[root@newcentos7 ~]#
2.管理远程会话
screen命令能做的事情非常多:可以用-S参数创建会话窗口;用-d参数将指定会话进行离线处理;用-r参数恢复指定会话;用-x参数一次性恢复所有的会话;用-ls参数显示当前已有的会话;以及用-wipe参数把目前无法使用的会话删除,等等。
下面创建一个名称为backup的会话窗口。当在命令行中敲下这条命令的一瞬间,屏幕会快速闪动一下,这时就已经进入screen服务会话中了,在里面运行的任何操作都会被后台记录下来。
screen -S backup
之前我打开了一个,又把它关了,所以有两个。
screen -ls
退出
exit
在日常的生产环境中,其实并不是必须先创建会话,然后再开始工作。可以直接使用screen命令执行要运行的命令,这样在命令中的一切操作也都会被记录下来,当命令执行结束后screen会话也会自动结束。
为了演示screen不间断会话服务的强大之处,创建一个名为linux的会话,然后强行把窗口关闭掉(这与进行远程连接时突然断网具有相同的效果)。
screen -S linux
tail -f /var/log/messages
由于刚才关闭了会话窗口,这样的操作在传统的远程控制中一定会导致正在运行的命令也突然终止,但在screen不间断会话服务中则不会这样。我们只需查看一下刚刚离线的会话名称,然后尝试恢复回来就可以继续工作了:
screen -r linux
tail -f /var/log/messages
再次关闭,查看了一下,可以看到tail命令是不间断运行的。
如果我们突然又想到了还有其他事情需要处理,也可以多创建几个会话窗口放在一起使用。如果这段时间内不再使用某个会话窗口,可以把它设置为临时断开(detach)模式,随后在需要时再重新连接(attach)回来即可。这段时间内,在会话窗口内运行的程序会继续执行。
3.会话共享功能
screen命令不仅可以确保用户在极端情况下也不丢失对系统的远程控制,保证了生产环境中远程工作的不间断性,而且它还具有会话共享、分屏切割、会话锁定等实用的功能。其中,会话共享功能,当多个用户同时控制主机的时候,它可以把屏幕内容共享出来,也就是说每个用户都可以看到相同的内容。
要实现会话共享功能,首先使用ssh服务程序将终端client a远程连接到服务器,并创建一个会话窗口。
然后,使用ssh服务程序将终端client b远程连接到服务器,并执行获取远程会话的命令。
接下来,两台主机就能看到相同的内容了。右边一台操作的步骤,左边都能清楚的看大。hostname是远程主机的hostname。