什么是Screen?

看看官网怎么介绍的,这是地址http://www.gnu.org/software/screen/,原文为:

Screen is a full-screen window manager that multiplexes a physical terminal between several processes, typically interactive shells

这里把重点圈出来,windows manager窗口管理,主要用于执行长时间不能中断的备份、测试和传输任务等(恢复会话);以及共享终端会话窗口(窗口共享)

安装Screen

现在许多的 Linux 发行版通常都预装了 Screen 。通过运行以下命令,可以查看系统是否安装了 Screen :

ubuntu@ubuntu ~> screen -v
Screen version 4.08.00 (GNU) 05-Feb-20

如果你的系统并未安装 Screen ,则可以执行以下命令来安装:

$ sudo apt install screen

创建启动会话

未使用前终端为zsh(示例中已安装oh-my-zsh)

image-20200825101104934

使用screen启动一个 Screen 会话后,终端进入screen

GIF-2020-8-25-10-15-23

使用 screen -ls 查看已经创建的screen会话:

ubuntu@ubuntu ~> screen -ls
There are screens on:
        15649.docker    (2020年08月25日 09时32分13秒)   (Attached)
        15601.pts-2.ubuntu      (2020年08月25日 09时29分44秒)   (Attached)
        7117.nc (2020年08月24日 13时54分42秒)   (Detached)
3 Sockets in /run/screen/S-ubuntu.

使用 screen -S <会话名> 创建并进入screen会话,这里创建一个名为“test”的会话:

ubuntu@ubuntu ~> screen -S test
ubuntu@ubuntu ~> screen -ls
There are screens on:
        18558.test      (2020年08月25日 10时27分05秒)   (Attached)
        15649.docker    (2020年08月25日 09时32分13秒)   (Attached)
        15601.pts-2.ubuntu      (2020年08月25日 09时29分44秒)   (Attached)
3 Sockets in /run/screen/S-ubuntu.

分离和重新连接会话

进入 Screen 终端里执行命令后,可以输入会话分离快捷键 Ctrl a+d ,回到原来的shell会话中。这时,Screen 会话会继续留在后台执行更新任务。而且无论是网络断开连接,还是关闭原来的 Shell 会话,它都不会受到影响。

GIF-2020-8-25-10-36-48

如果你想重新连接到已分离的 Screen 会话,以查看更新进程,只需执行以下命令:

$ screen -r <会话名>

会话的嵌套

即在 Screen 会话中的使用 Screen 会话,实现用户在一个窗口中使用多个终端。

在 Screen 终端再次输入 screen 命令,或者按 Ctrl a+c 快捷键,这会在你原来的 Screen 会话中再启动一个 Screen 会话,而原来的 Screen 会话则会在后台保持活动。

image-20200825113225900

可以使用快捷键 Ctrl a+n (切换至下一个 Screen 会话)或者 Ctrl a+p (切换至上一个 Screen 会话)进行切换。

关闭会话

可以使用 Ctrl d 快捷键,也可以输入 exit 命令关闭:

$ exit

另外,进入 Screen 终端后,按 Ctrl a+? (先按Ctrl +a,松开后按shift+/)快捷键,可以查看 Screen 所附带的所有命令:

image-20200825111654594

为了提高输入效率,这里将一些常用的screen命令设置为简写,编辑~/.bashrc(如果已经使用oh-my-zsh,为~/.zshrc)

ubuntu@ubuntu ~> vim ~/.zshrc

设置简写
alias sr='screen -r'
alias sls='screen -ls'
alias ss='screen -S'