linux入门系列14--ssh服务及主机远程管理 (5)

screen是终端多路复用器,这意味着可以启动 screen 会话,然后在该会话中打开任意数量的窗口(虚拟终端),即使断开连接,当其窗口不可见时,在 screen 上运行的进程将继续运行。

2.1.3 screen安装

在RHEL7系统中,没有默认安装screen服务程序,需要手动安装。

可以通过如下命令检测是否安装screen

[root@origin ~]# screen --version bash: screen: command not found... [root@origin ~]#

通过yum进行安装

[root@origin ~]# yum install screen Loaded plugins: fastestmirror, langpacks base | 3.6 kB 00:00 ...省略部分内容 Installed: screen.x86_64 0:4.1.0-0.25.20120314git3c2946.el7 Complete! [root@origin ~]# screen --version Screen version 4.01.00devel (GNU) 2-May-06 [root@origin ~]#

安装成功后可以看到版本为4.01。

2.2 语法

语法格式:

​ screen [参数] 会话名称

常用参数:

参数 作用
-S   创建会话窗口  
-r   回复指定会话  
-x   一次性恢复所有会话  
-ls   显示当前已有的会话  

执行方式:

​ 可以先通过screen -S创建会话窗口,然后在窗口中执行任务。也可以直接在screen命令后边跟上要执行的命令,这样命令执行完自动结束screen会话。

2.3 会话管理功能 2.3.1 创建会话 [root@origin ~]# screen -S first

注意观察,此时很快的会屏幕闪一下,然后就没有动静了,其实这已经就进入了刚才创建的first会话窗口了。执行以下命令可以验证

[root@origin ~]# screen -ls There is a screen on: 48917.first (Attached) 1 Socket in /var/run/screen/S-root. [root@origin ~]# 2.3.2 退出会话

直接在刚才的窗口中执行exit命令,即可退出first会话

[root@origin ~]# exit exit [screen is terminating] [root@origin ~]#

另外在创建会话时,也可以直接在命令后跟上要执行的任务,这样就无须先创建会话,然后再开始工作,在命令中的一切操作也都会被记录下来,当命令执行结束 后 screen 会话也会自动结束。演示如下:

[root@origin ~]# screen vim test.txt hello "test.txt" [New] 1L, 6C written [screen is terminating] [root@origin ~]#

创建一个test.txt文件,保存并退出vim后,就自动退出会话了。

2.3.2 会话恢复

所谓的会话恢复是指会话异常断开的情况,比如强行关闭会话窗口,断网等,而不是通过exit正常命令退出窗口或会话。如果正常退出的话通过screen -ls是看不到会话信息的,只有在异常断开的情况才能看到并恢复。

先创建一个会话,并执行一个查看日志文件的任务

[root@heimatengyun ~]# screen -S test [root@heimatengyun ~]#tail -f /var/log/messages

此时直接断开或关闭会话窗口,模拟异常断开的情况。

再次远程登录系统,在会话窗口中通过以下命令查看上次的会话,并恢复会话

[root@origin ~]# screen -ls There is a screen on: 49170.test (Detached) 1 Socket in /var/run/screen/S-root. [root@origin ~]# screen -r test [root@origin ~]# tail -f /var/log/messages Jan 5 19:40:01 origin systemd: Starting Session 77 of user root. Jan 5 19:40:01 origin systemd: Started Session 77 of user root. Jan 5 19:42:37 origin systemd-logind: Removed session 76. Jan 5 19:42:39 origin systemd-logind: New session 78 of user root. Jan 5 19:42:39 origin systemd: Starting Session 78 of user root. ... 省略部分内容

恢复会话后,可以看到tail命令仍然继续在执行,牛吧?

如果是传统方式,直接断开或关闭会话窗口,命令一定会丢失,也就是说下次再登录系统的时候,不会看到tail命令仍然在继续执行。这就是screen的用处,即使会话断开,只要服务器主机没关闭就会继续执行任务。

2.4 会员共享功能

除了前面讲解的会话恢复之外,screen还有其他很多功能,我们在来了解一下会话共享功能。

file

分别用securecrt登录上边的100和104两台主机,我们以共享104屏幕主机为例(因为104上边已经装了screen)

2.4.1 先从100主机ssh到104 [root@heimatengyun ~]# ssh 192.168.78.104 root@192.168.78.104\'s password: Last login: Sun Jan 5 20:41:31 2020 from 192.168.78.1 [root@origin ~]# screen -S test 2.4.2 在104主机执行screen命令 [root@origin ~]# screen -x 2.4.3观察屏幕共享

在104机器上执行的任何操作,在100上都可以看到,同样,在104上执行的任何操作在100上都可以看到。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggswg.html