Screen是Linux下的一款远程会话管理工具

通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。

为什么关掉窗口/断开连接会使得正在运行的程序死掉, 挂断信号(SIGHUP)默认的动作是终止程序

Screen是一个可以在多个进程之间多路复用一个物理终端的窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

// 创建一个新的窗口:
[root@nljb ~]# screen
[root@nljb ~]# screen vi nljb.c

// 键入C-a d,Screen会给出detached提示
... 分离会话, 再也不用担心我们关掉terminal程序就不运行了

// 查看会话
[root@nljb ~]# screen -ls
There is a screen on:
    6582.pts-1.tivf06      (Detached)
1 Socket in /tmp/screens/S-root.

// 重新连接会话:
[root@nljb ~]# screen -r 6582

// 清除死去的窗口
[root@nljb ~]# screen -wipe 
C-a ?   显示所有键绑定信息
C-a w   显示所有窗口列表
C-a C-a 切换到之前显示的窗口
C-a c   创建一个新的运行shell的窗口并切换到该窗口
C-a n   切换到下一个窗口
C-a p   切换到前一个窗口(与C-a n相对)
C-a 0..9切换到窗口0..9
C-a a   发送 C-a到当前窗口
C-a d   暂时断开screen会话
C-a k   杀掉当前窗口与程序
C-a [   进入拷贝/回滚模式