[RHEL]-15-使用不间断会话Screen
引言
Screen会话一般用在不稳定的网络环境,用户远程登录了某台服务器后,创建一个Screen会话开始工作,当网络不小心断开时,会话中的内容不会丢失。
文章目录
- 0×1.安装Screen
- 0×2.Screen会话实例
- a.如何创建Screen会话
- b.如何挂起Screen会话
- c.如何在Screen会话中新建会话窗口
- d.如何在Screen会话窗口间切换
- e.如何锁定Screen会话
- f.如何彻底关闭Screen会话
- 0×3.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断开共享,那么其它人也会执行这个命令从而全部断开,一定要注意。