Linux之screen命令使用技巧 - 图1

什么是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 :

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

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

  1. $ sudo apt install screen

创建启动会话

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

Linux之screen命令使用技巧 - 图2

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

Linux之screen命令使用技巧 - 图3

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

  1. ubuntu@ubuntu ~> screen -ls
  2. There are screens on:
  3. 15649.docker (20200825 093213秒) (Attached)
  4. 15601.pts-2.ubuntu (20200825 092944秒) (Attached)
  5. 7117.nc (20200824 135442秒) (Detached)
  6. 3 Sockets in /run/screen/S-ubuntu.

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

  1. ubuntu@ubuntu ~> screen -S test
  2. ubuntu@ubuntu ~> screen -ls
  3. There are screens on:
  4. 18558.test (20200825 102705秒) (Attached)
  5. 15649.docker (20200825 093213秒) (Attached)
  6. 15601.pts-2.ubuntu (20200825 092944秒) (Attached)
  7. 3 Sockets in /run/screen/S-ubuntu.

分离和重新连接会话

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

Linux之screen命令使用技巧 - 图4

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

  1. $ screen -r <会话名>

会话的嵌套

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

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

Linux之screen命令使用技巧 - 图5

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

关闭会话

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

  1. $ exit

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

Linux之screen命令使用技巧 - 图6

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

  1. ubuntu@ubuntu ~> vim ~/.zshrc
  2. 设置简写
  3. alias sr='screen -r'
  4. alias sls='screen -ls'
  5. alias ss='screen -S'