2015-04-26 wcdj
摘要:UNIX环境下通过 screen 工具可以方便在一个终端窗口中同时处理多个会话,并且可以在当前的终端退出后保持之前开启的会话继续执行,并在后续新开启的终端通过screen -r $(会话ID) 的方式重新attach到之前的会话以便继续处理。
screen - screen manager with VT100/ANSI terminal emulation
Screen is a full-screen window manager that multiplexes a physical terminal between several processes (typically interactive shells). (更多帮助,可以 man screen)
可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/ssh连接窗口那样。
使用screen的方法:
方法1:在终端直接输入screen命令。
这样screen将创建一个执行shell的全屏窗口。你可以执行任意shell程序,就像在ssh窗口中那样。在该窗口中键入exit退出该窗口,如果这是该screen会话的唯一的窗口,该screen会话退出,否则screen自动切换到前一个窗口。
方法2:screen 要执行的程序
比如,screen vi your_file
screen创建一个执行vi your_file 的单窗口会话,退出vi将退出该窗口/会话。这样的好处是,假如我们正在当前窗口用vi编写代码,此时想出去查个东西,这时可以不用退出vi编辑器,也不用再打开一个终端,而是在vi编辑器下输入命令 :!screen (或者用下面更快捷的方法3)再启动一个新的shell会话来执行我们额外要完成的任务,搞定后,再输入 exit 命令就可以立刻回到之前vi编写代码的当前状态,然后继续之前的操作。
方法3:在screen的环境下,使用快捷键 ctrl-a + c 立刻创建一个新的会话
方法4:screen的attach和detach方法
类似方法2的场景,可以使用screen的attach和detach方法来更快的实现任务的切换。比如,我们用screen vi your_file创建一个会话(任务A),然后准备执行任务B,此时可以使用 ctrl-a d 立刻切换出vi的编辑器环境,进入到一个全新的会话中(来执行我们的任务B),执行完任务B后,可以通过 screen -ls 来查看我们“暂时挂起的会话”,根据前面显示的会话ID,然后再通过 screen -r $(会话ID) 的方式可以很方便的切换到之前的vi编辑器环境,然后继续我们的编码工作。
可以在screen会话下通过C-a ?
来查看所有的快捷键,常用的有:
使用键绑定C-a ?命令可以看到,默认的命令字符(Command key)为C-a,转义C-a(literal ^a)的字符为a。因为screen把C-a看作是screen命令的开始,所以如果你想要screen窗口接收到C-a字符,就要输入C-a a。
其他常用的命令选项有:
Refer
[1] https://www.ibm.com/developerworks/cn/linux/l-cn-screen/
[2] http://www.gnu.org/software/screen/
[3] http://www.slac.stanford.edu/comp/unix/package/epics/extensions/iocConsole/screen.1.html