Screen

2022/11/01 Linux

screen 是 Linux 上管理多个终端会话的利器。如果你是一个常年和终端打交道的人员,例如经常需要远程登录多台机器的运维人员,或者习惯使用 Vim 变成的开发人员,screen 是很好的提高效率的工具。如果你的公司有严格的内网安全策略,screen 的保持会话功能也能让你实现近似于单点登录的能力,在登录到跳板机后,使用 screen 在跳板机上实现对其他机器的快速访问。

常见的命令:

  • screen -R:恢复会话,如果不存在,创建新的会话
  • screen -ls:列出会话

~/.bashrc 中增加命令:

alias sr='screen -R'
alias sl='screen -ls'

在终端手动执行 . ~/.bashrc 或者重开终端以使命令生效。

创建新会话时,建议语义准确,例如 sr devdb。再次连接终端想恢复会话可以 sr devdb 重新进入会话。如果有多个会话,其中只有一个会话名称包含 dev ,则 sr dev 就会直接进入 devdb 会话。如果有多个会话包含 dev,screen 会列出这几个会话,供你选择。但目前还没发现自动提示和补全会话名称的方式。

在会话中:

  • 断开会话,按 ctrl + a,再按 d
  • 结束会话,按下 ctrl + d

相比在终端浏览器,例如 xshell 中,直接打开多个标签页连接,screen 有多个好处。

  • 终端浏览器崩溃退出,电脑重启,但是远程会话依旧维持
  • 每个终端标签页需要重复登录,如果有严格的登录管控,会很不方便,即使在 xshell 中配置登录脚本,但是一些需要动态密钥或者手机口令的场景下,依然十分麻烦。

不太常见的命令:

  • 删除僵尸会话,screen -wipe 20305,20305为此会话的进程号,通过 sl 命令可以查看。如果失败,可以手动 kill -9 20305 结束进程再删除会话。僵尸会话是无法重新恢复的会话,目前我还不了解产生的原因。
    $ sl
    There are screens on:
      20305.hello  (Attached)
    1 Sockets in /var/run/screen/S-zhiqiangfan.
    

原文zqfan (zhiqiangfan@tencent.com) 发表。版权声明(License): (CC 4.0) BY-NC-SA

Search

    Table of Contents