对话 UNIX: 使用 Screen 创建并管理多个 shell(3)

启动 Screen。在出现许可协议消息时,按 Return;现在应该会看到一个新的登录 shell 提示。(在下面的清单中,在每个 shell 提示前面人为地添加一个昵称,以此区分各个 shell 实例并与图 1 到图 5 联系起来)。

Local $ ssh remote.example.com Last login: Sun Dec 21 17:23:16 2008 from local.example.com Remote $ hostname remote.example.com Remote $ screen A $ top  

现在处于 图 2 所示的状态。一个 Screen 会话正在运行(尽管看不到),窗口 A 处于活动状态,它正在运行系统监视器 top,每隔几秒刷新一次系统性能信息。

为了临时断开与 Screen 会话及其所有窗口的连接,按 Ctrl-a,然后按 d(小写的字母 D,代表 “detach”)。Ctrl-a 是 Screen 命令的前缀,d 是用于断开连接的命令。现在处于 图 3 所示的状态。Screen 会话和窗口 A 仍然存在。可以通过运行 screen -list 确认这一点:

$ screen -list There is a screen on: 21020.pts-2.remote (Detached) 1 Socket in /tmp/screens/S-strike.  

screen -list 命令显示所有可用的 Screen 会话。(顺便说一句,可以同时运行多个 Screen 会话,每个会话有一组同时运行的窗口。图 6 显示这种情况。每个 Screen 实例跟踪它自己的当前窗口。稍后会提供一些关于 Screen 的高级用法的提示)。编号为 21020 的会话已经断开连接并相应地加上了标志。因为只有一个 Screen 会话,所以可以直接用 screen -r 重新连接它。由于运行了 Screen,top 会一直运行。


图 6. Screen 提供多个会话,每个会话有多个窗口

Screen 提供多个会话,每个会话有多个窗口


为了进入 图 4 所示的状态,重新连接当前会话,然后按 Ctrl-a,然后按 c(小写的字母 C,代表 “create”)创建一个新窗口。接下来,按 Ctrl-a,然后再次按 c。现在,Screen 会话管理三个窗口。

Ctrl-a,然后在当前窗口中按双引号键("),就可以看到会话中可用窗口的列表:

Num Name Flags 0 bash $ 1 bash $ 2 bash $  

在默认情况下,窗口的名称取自它启动的第一个命令(通常是一个 shell)。因此,在上面的列表中有三个 bash 窗口。可以用箭头键在窗口列表中上下移动;只需按回车即可选择窗口。

终止当前窗口的方法是,在窗口的 shell 提示上输入 exit,或者按键盘快捷键 Ctrl-a,然后按 k(小写的字母 K,代表 “kill”)。如果使用后一种方法,那么在窗口底部会出现一个警告,要求您确认要杀死此窗口。按 y(小写的字母 Y,代表 “yes”)确认,或按 n(小写的字母 N,代表 “no”)拒绝。如果杀死一个 Screen 会话中运行的所有窗口,屏幕命令就会输出一个消息并终止:

Remote $ screen ... Create and manipulate windows ... ... Exit from all windows... [screen is terminating] Remote $ screen -list No Sockets found in /tmp/uscreens/S-supergiantrobot.  

如果杀死了所有打开的窗口,那么 screen -list 命令输出 No sockets...,表示没有 Screen 会话可用。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27729.html