使用 Screen 指令操作 UNIX/Linux 终端机

网络 by 神秘人 at 2016-11-10

这里介绍如何使用 screen 指令來操作 UNIX/Linux 的终端机,让工作更有效率。

screen 指令是一般 UNIX/Linux 使用者或管理者常会使用的终端机管理程式,它可以让一個終端机当成好几个来使用,对于以 SSH 连线到服务器上工作的人会很有用。

通常一個终端机(terminal 或 console)只能开启一個互动(interactive)的 shell 來使用,而借着 screen 的幫助,使用者可以在一個终端机,同时开启多个互动式的 shell,除了自己使用之外,还可以让 session 分享给不同的使用者,或是让执行中的 session 暂時卸离(detach),随后可重新连接(attach)即可继续操作。

开始使用 screen

若要使用 screen 这个工具,就直接在终端机执行它:

screen

这時候会出現一些信息,按下空格鍵跳过之后,就可以看到一个新的 shell。下面是示范进入 screen 环境后,再执行 exit 离开的狀況。

001

大家可以发现,进入 screen 所建立的新 shell 之后,看起后跟原本的画面一模一样,但是它其实是一個新开启的 shell,而在离开 screen 环境之后,就会回到原本的 shell 中。

操作說明

在进入 screen 的环境之后,其实就跟一般的 shell 环境一样,一般命令列中可以做的事情在这里也都可以做,只不过在这里多出了一些 screen专用的控制指令可以使用,而这些 screen 控制指令可以使用 Ctrl + ? 來查询线上的操作說明。

002

在查询线上控制指令時,可以使用 Enter 或空格键来换页,看完之后会回到原來 screen 的环境

将 screen 卸离(Detach)与重新连接(Re-attach)

使用 screen 最大的好处之一就是可以将其卸离,而在重新连接之後完全不會影响正在执行中的任何工作。

以youtube-dl为例

1.创建会话:最简单的就是直接输入screen回车,一个新会话就完成了(debian下会有提示,再按一次回车就可以了),但还是推荐用下面的命令来创建会话

screen -S video

2.上面命令的意思就是新创建一个名为video的会话,这时你可以继续输入其它命令

youtube-dl https://www.youtube.com/watch?v=uLw2Ee4YoII

开始下载youtube视频,你可以换成任何一个youtube-dl支持的视频网站。

下载多个文件

Open your text editor and paste a broadcast URL on each line
Save it as something like periscope.txt
Run youtube-dl -ia periscope.txt

3.离开会话,按住键盘上的ctrl,然后依次按a和d,好了,又回到主会话了,这时你可以继续创建其它会话或者执行其它命令,对我们已经创建video的会话内容没有任何影响,你甚至可以退出会话;

4.恢复创建的会话:如果还记得会话名称,可以输入命令 screen -r video

5.当然,如果你在另一台机器上没有分离一个Screen会话,就无从恢复会话了,显示为(Attached)。

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

screen -d

查看正在运行中的screen会话,同时会列出ID号

screen -ls

5.退出screen,使用screen会耗费一定的系统资源,所以当screen中的命令执行完毕之后,最好退出screen,直接输入命令 exit

提示[screen is terminating]表示已经成功关闭screen会话(不会保留在内存中)