[RHEL]-15-使用不间断会话Screen

引言

Screen会话一般用在不稳定的网络环境,用户远程登录了某台服务器后,创建一个Screen会话开始工作,当网络不小心断开时,会话中的内容不会丢失。

文章目录

0×1.安装Screen

默认情况下RHEL系统并没有安装Screen,需要使用yum进行安装,确保yum仓库配置正确,使用下面的命令:

					[root@qingsword.com ~]# yum install -y screen
					

0×2.Screen会话实例

a.如何创建Screen会话

使用大写-S来创建新的会话,例如:

					#-S参数后面是这个新会话的名称,可以自定义,输入下面这条命令后,会发现终端进入了会话模式,在图形界面中,终端窗口上面会显示[Screen 0:]等字样,代表当前进入的是第0个会话,在字符界面下会清屏,就像进入了另外一个终端一样
					[root@qingsword.com ~]# screen -S www.qingsword.com
					

此时,在这个会话下所做的所有操作都会被保存在会话进程中,网络出现故障断线任务也不会终止,再次连接上后又能恢复当前的工作进程。

b.如何挂起Screen会话

如果此时我们想将刚才创建的会话进程暂时的挂起(也叫分离),放入后台,等需要的时候再唤醒,可以按键盘的[ctrl]+[a]组合键,然后单独按一下[d],屏幕上就会出现一行提示,分离了刚才的会话:

					#4387是这个会话的后台进程ID,可用这个ID来恢复会话
					[detached from 4387.www.qingsword.com]

					#可以使用-ls参数来查看系统上都运行了哪些会话,其中就能看到我们刚才分离的会话,会话名称后面的括号中:
					# (Attached)表示这个会话当前已经有人连接上在操作,是一个活动会话;
					# (Detached)表示这个会话已经被分离(挂起),可以再次连接;
					# (Dead)表示已经被结束的会话,无法连接;
					[root@qingsword.com ~]# screen -ls
					There are screens on:
					  4387.www.qingsword.com (Detached)

					#如果我们想继续4387会话的工作,可以使用-r参数,再次连接到会话中
					[root@qingsword.com ~]# screen -r 4387
					

如果新建了多个会话,就可以使用上面这种方法在会话之间切换来完成不同的工作任务。

c.如何在Screen会话中新建会话窗口

使用"screen -S"创建的会话任务就像是一个大的容器,在这个会话容器下,还能创建不同的"子会话",这些子会话就叫"会话窗口",它们不会出现在"screen -ls"列表中,但可以在会话容器中查看到,并且能够在不同会话窗口间切换,这样我们就能够将某一类工作放在一个大的会话容器中,然后创建多个"子会话"来完成不同的工作。

接着上面的实验,首先连接到4387会话,然后使用组合件[ctrl]+[a],再按一下[c]键,就会新建一个子会话,并且切换到子会话窗口中。

Ps:在会话中,命令键入总是以组合件[ctrl]+[a]加单独按键的形式。

d.如何在Screen会话窗口间切换

有多种方式可以在会话的子窗口间切换:

组合件[ctrl]+[a],再按一下[w]键,可以查看当前会话有多少个子会话,图形界面会显示在终端的标题栏中,字符界面会显示在屏幕左下角,例如[6*$ root@qingsword.com~/Lb],表示当前处在会话的第6个子会话下(不是当前会话开头会显示6-$或6$,带星号的为当前处于的窗口);

组合件[ctrl]+[a],再按数字键[0-9]可以在0~9的子会话间切换(必须先使用[c]创建出这些会话);

组合件[ctrl]+[a],再按[n],切换到下一个会话窗口;

组合件[ctrl]+[a],再按[p],切换到上一个会话窗口;

在子窗口中输入exit回车后,就关闭了这个子会话,自动跳转到前一个子窗口中;
用组合件[ctrl]+[a],再按[k]也能关闭当前子会话,系统会提示你是否确定,输入y回车后就能结束子会话,如果会话中只有一个子会话存在,这个操作(exit或[k])会直接关闭总会话,且无法再连接;

e.如何锁定Screen会话

用当前登录用户的密码锁定(必须输出密码才能解锁),组合件[ctrl]+[a],再按[x]。

f.如何彻底关闭Screen会话

彻底关闭会话,可以使用exit将会话中的子会话逐个退出,也可以使用kill命令直接杀死会话进程,例如:

					[root@qingsword.com ~]# kill 4387
					

0×3.Screen会话共享

这是一个比较好玩的功能,让多个人共享同一个会话进程,请看下面的实例:

					#假设服务器的ip为192.168.1.113,这台服务器上面使用root权限运行了一个screen会话,客户机qingA首先ssh到服务器
					qingA@qingsword.com ~$ ssh root@192.168.1.113
					root@192.168.1.113's password: 
					Last login: Wed Nov 23 09:55:53 2016 from 192.168.1.105

					#查看会话列表
					[root@qingsword.com ~]# screen -ls
					There are screens on:
						6354.qing	(Attached)
					2 Sockets in /var/run/screen/S-root.

					#使用共享方式加入会话6354
					[root@qingsword.com ~]# screen -x 6354
					
					#加入后,服务器和qingA所输入的任何命令,双方都是实时显示的,就像在共用一台电脑一样,并且这种共享不限于两个人,可以是多个人同时连接同一个会话,这对于解决一些棘手的问题时十分有帮助,可以让多个人一起来诊断问题的原因,如果想要单独断开共享可以使用组合件[ctrl]+[a],再按[d],这并不会影响其它人的共享,但如果你使用exit断开共享,那么其它人也会执行这个命令从而全部断开,一定要注意。