一、为什么要使用screen服务
当我们在进行一些常见的远程操作时,通常首先会先进行远程ssh登录 或者telnet连接到远程服务器上,然后执行相关操作,或程序启动等。
1、程序所需的执行时间过长,可能需要挂载几天的那种,可能会自动中断;又可能,如果当前网络不稳定,或者本机出现故障,导致客户端连接服务器失败,命令被迫停止;甚至有可能自己不小心关掉了客户端导致命令被迫停止。
2.在执行文件打包操作时,打包操作的输出信息占满了用户的屏幕界面,如果这时候还想安装某个服务程序,那只好再开一个远程会话的终端。终端开多了自己都分不清每个终端窗口是干什么的了。
3.想共享会话内容
基于以上,我们可以使用screen服务,在程序异常中断后能恢复。
二、安装screen服务
RHEL中并没有默认安装screen服务程序,需要配置YUM仓库来安装它。
yum install screen -y //有了这个-y就不用在安装的过程中输入y了,自动确认
看到Complete!就安装好了
三、使用screen
1、创建会话窗口。创建后生成一个新的shell页面,在这个页面里做的任何操作都能被记录下来
screen -S test //test为会话窗口的名字,任意取
2、在新生成的shell页面里,我们可以输入要执行的操作,此处以追踪/var/log/messages为例
3、随后我们在新shell页面里按下ctrl+a 再按下d ,退出了screen,但 追踪的任务仍在执行
4.若想再次进入追踪任务,先用screen -ls查看当前用户的screen窗口,19088是会话号,test是会话名,Detached表明该会话没有用户登录,Attached表明有用户登录
5、随后,针对Detached的会话,使用以下命令再次进入
screen -r test //这里的test也可以换成会话号 19088
针对Attached的会话,想要进入,需要先把目前登录的用户踹掉,再进去
screen -d -r test //-d能让test先离线,等同于踹掉当前用户
四、测试screen
1、直接把Xshell关掉,模拟忽然的掉线,然后重开Xshell,发现会话依然存在,
screen -r test 恢复会话,发现掉线之前的输出内容一致
问题:比如有个程序在会话里运行,那xshell忽然断了,在断了到重新连接xshell这段时间里程序还在运行不?如果没有运行,是需要恢复会话后再继续运行?还是连接之后就自动运行了?
答:
如果你在 Xshell 中运行了一个程序,并且该程序在一个 Screen 会话中运行,然后 Xshell 连接突然断开,那么这个程序将继续在后台运行,不会因为 Xshell 断开连接而停止。因此程序会持续输出内容,但是由于xshell断了,因此输出的内容不会呈现在xshell的screen会话中,这部分内容会丢失。
当重新连接到 Xshell ,原来的会话也不会自动继续输出信息到 Xshell。需要手动使用 screen -r
命令来重新连接到之前的 Screen 会话,然后会话中的输出才会再次显示在 Xshell 上。所以,使用 screen -r
命令重新连接到之前的 Screen 会话,会发现输出的内容还和xshell断掉时一致。
2、如果想要彻底删除test这个会话,在进入的新的Shell页面ctrl + c 随后输入exit
这样彻底删掉了test这个会话
五、共享会话
当终端A和终端B以相同用户登录同一个centos系统(或者叫服务器系统),终端A使用下面的指令创建会话
screen -S linux //linux为会话名
终端B可以通过下面的指令,看到终端A在创建的linux会话中的一切操作.有点像共享屏幕的感觉
screen -x