使用SSH登录Linux服务器的时候,如果遇到网络断开的话当前的操作就会中断,即使重新连接上也没有用。在Linux中与当前终端交互的进程称之为前台进程组,其余都是后台进程组,当交互终端检测到网络连接断开时,会将挂断信号发送给控制进程,前台进程中断,进程组处于STOP状态,然后系统会中断该进程组中的所有进程,从而断开连接,命令也会终止。如果想要会话中断之后当前操作命令不受影响的话就要用到screen命令。
1. 安装
在命令行中执行
screen -ls
如果出现“-bash: screen: command not found”的提示则表明系统中没有安装screen,安装方法如下:
# CentOS下使用yum安装
yum -y install screen
# Debian或Ubuntu下
apt-get install screen
2. 使用方法
screen的使用非常简单,可以使用下面的方法新建一个会话:
# 直接使用screen命令创建一个默认名称的会话
screen
# 也可以使用-S参数指定会话窗口的名称
screen -S newshell
新建会话之后就会打开一个新的窗口,然后在新窗口中执行对应的命令和操作。
如何在各个会话窗口中进行切换呢?首先需要使用-ls参数来查看当前运行的screen列表:
[root@computername ~]# screen -ls
There are screens on:
20167.pts-0.computername (Attached)
20186.newshell (Attached)
2 Sockets in /var/run/screen/S-root.
上面的结果表名有两个会话,20167.pts-0.computername这个是直接使用screen命令创建的,后面一个是指定了会话名称,前面的数字表示进程的id。
知道了上面的信息之后,可以使用-d -r命令切换到对应的会话,后面可以是pid,也可以是名称,以20167.pts-0.computername为例,可以使用下面两种方式进入:
screen -d -r 20167
screen -d -r pts-0.computername
如果退出会话也很简单,首先使用上面的方式进入会话,然后执行exit命令就可以退出了。如果没有任何会话的话执行screen -ls命令会显示类似下的提示:
No Sockets found in /var/run/screen/S-common.
参考资料:
CentOS使用Screen管理会话选项
Linux Screen命令用法
Screen使用教程:Linux必备的后台作业方法