Unix/Linux
下的screen
命令一个很重要的功能就是可以在一个物理连接(SSH
/telnet
)终端(terminal
)上创建并管理多个工作窗口(也称之为“virtual terminal
”)。达到此目的可以有以下两种方式:
(1)启动screen
命令进入一个工作窗口,进行一番操作后,使用ctrl-a d命令离开这个窗口,回到真实的终端。然后在真实终端再次启动screen
命令,就可以启动下一个工作窗口。如下例所示:
[root@localhost ~]
[detached from 5362.pts-0.localhost]
[root@localhost ~]
[detached from 5378.pts-0.localhost]
[root@localhost ~]
[root@localhost ~]
root 5362 1 0 06:19 ? 00:00:00 SCREEN
root 5378 1 0 06:20 ? 00:00:00 SCREEN
root 5394 5334 0 06:20 pts/0 00:00:00 grep --color=auto -i SCREEN
[root@localhost ~]
There are screens on:
5378.pts-0.localhost (Detached)
5362.pts-0.localhost (Detached)
2 Sockets in /var/run/screen/S-root.
[root@localhost ~]
root 5378 1 0 06:20 ? 00:00:00 SCREEN
root 5379 5378 0 06:20 pts/2 00:00:00 /bin/bash
root 5745 5722 0 21:45 pts/0 00:00:00 grep --color=auto 5378
[root@localhost ~]
root 5362 1 0 06:19 ? 00:00:00 SCREEN
root 5363 5362 0 06:19 pts/1 00:00:00 /bin/bash
root 5749 5722 0 21:50 pts/0 00:00:00 grep --color=auto 5362
可以看到会有两个SCREEN
进程(进程号分别为5362
和5378
),同时每个进程都有一个/bin/bash
的子进程,而这个/bin/bash
子进程就是工作窗口(“virtual terminal
”)。
(2)利用嵌套screen
命令,也就是启动screen
命令进入一个工作窗口以后,不会返回真正的终端,而是不断在当前的工作窗口中递归地调用screen
命令。如下例所示:
[root@localhost ~]
[detached from 5756.pts-0.localhost]
[root@localhost ~]
root 5756 1 0 21:52 ? 00:00:00 SCREEN
root 5817 5722 0 21:52 pts/0 00:00:00 grep --color=auto -i SCREEN
[root@localhost ~]
root 5756 1 0 21:52 ? 00:00:00 SCREEN
root 5757 5756 0 21:52 pts/1 00:00:00 /bin/bash
root 5772 5756 0 21:52 pts/2 00:00:00 /bin/bash
root 5787 5756 0 21:52 pts/3 00:00:00 /bin/bash
root 5802 5756 0 21:52 pts/4 00:00:00 /bin/bash
root 5819 5722 0 21:53 pts/0 00:00:00 grep --color=auto 5756
可以看到这种方式只会有一个SCREEN
进程,所有的工作窗口(“virtual terminal
”)都是由这一个进程产生的。
参考资料:
(1)Why is there only one SCREEN process in nested screen session?;
(2)10 Screen Command Examples to Manage Linux Terminals。