实例

创建一个新的窗口

安装完成后,直接敲命令screen就可以启动它。

但是这样启动的screen会话没有名字,实践上推荐为每个screen会话取一个名字,方便分辨

screen -S david

screen启动后,会创建第一个窗口,也就是窗口No.0,并在其中打开一个系统默认的shell,一般都会是bash。 所以敲入命令screen之后,会立刻又返回到命令提示符,其实已经进入Screen了。

当然,也可以在screen命令之后加入喜欢的参数,使之直接打开指定的程序

例如: screen vi david.txt

screen创建一个执行vi david.txt的单窗口会话,退出vi 将退出该窗口/会话。

查看窗口和窗口名称

打开多个窗口后,可以使用快捷键C-a w列出当前所有窗口。

如果使用文本终端,这个列表会列在屏幕左下角,如果使用X环境下的终端模拟器,这个列表会列在标题栏里。

窗口列表的样子一般是这样:

0$ bash 1-$ bash 2*$ bash

Screen默认会为窗口命名为编号和窗口中运行程序名的组合,上面的例子中窗口都是默认名字。 练习了上面查看窗口的方法,可能就希望各个窗口可以有不同的名字以方便区分了。

可以使用快捷键C-a A来为当前窗口重命名,按下快捷键后,Screen会允许为当前窗口输入新的名字,回车确认。

会话分离与恢复

可以不中断screen窗口中程序的运行而暂时断开detach screen会话,并在随后时间重新连接 attach 该会话,重新控制各窗口中运行的程序。

例如,打开一个screen窗口编辑/tmp/david.txt文件:

screen vi /tmp/david.txt

之后想暂时退出做点别的事情,那么在screen窗口键入C-a d,Screen会给出detached提示:

  • 暂时中断会话

半个小时之后回来了,找到该screen会话:

screen -ls

  • 重新连接会话:

screen -r 12865

当然,如果在另一台机器上没有分离一个Screen会话,就无从恢复会话了。

这时可以使用下面命令强制将这个会话从它所在的终端分离,转移到新的终端上来:

清除dead 会话

如果由于某种原因其中一个会话死掉了(例如人为杀掉该会话),这时screen -list会显示该会话为dead状态。

使用screen -wipe命令清除该会话:

关闭或杀死窗口

正常情况下,当退出一个窗口中最后一个程序(通常是bash)后,这个窗口就关闭了。

另一个关闭窗口的方法是使用C-a k,这个快捷键杀死当前的窗口,同时也将杀死这个窗口中正在运行的进程。

如果一个Screen会话中最后一个窗口被关闭了,那么整个Screen会话也就退出了,screen进程会被终止。

除了依次退出/杀死当前Screen会话中所有窗口这种方法之外 还可以使用快捷键C-a :,然后输入quit命令退出Screen会话。

需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序。

其实C-a :这个快捷键允许用户直接输入的命令有很多,包括分屏可以输入split等,这也是实现Screen功能的一个途径,不过个人认为还是快捷键比较方便些。