Screen 是用另一个比较轻便的终端复用工具,[[Tmux]] 可以参考另外一篇文章。Screen 让用户可以在一个终端中开启单独不同的 “screen” 终端窗口来使用。我们都知道使用 ssh 连上服务器之后如果因为网络问题终端了当前连接,那么正在执行的任务也会因此中断,所以我们可以将长时间的任务放到 Screen 中执行,即使因为网络问题断开了 SSH 连接,再次使用 SSH 连上之后也可以轻松的恢复之前的任务。

Screen 让用户之前也可以分享 Session,只要 Screen 状态存在,其他用户也可以 detach/attach 到相关的 terminal Session 中来实现分享。

至于为什么有了这篇文章呢,是因为之前登录要一些机器上,发现并没安装软件的权限,所以安装不了 tmux,而发现系统中自带了 screen ,所以就学习一下。如果使用过 tmux 那么 screen 也是非常简单的。

安装

sudo apt install screen

使用

使用 Screen 非常简单

screen

这是会进入 Screen 创建好的环境。使用 Ctrl-a 在加上 ? 可以查看所有的快捷方式。

下面介绍比较重要的几个快捷键

新建 screen

通常情况下只需要 screen 新建匿名的 screen 即可,如果需要给 screen 命名可以使用

screen -S name

detach / attach Screen

Ctrl-a  d          detach screen 用来从 Screen 中脱离

需要重新连接则使用 screen -r

如果有多个 Screen,则需要使用 screen -ls 来查看 Session 的 ID。然后 screen -r id 来 attach。

修改 screen session name

如果在 screen session 内部,使用:

Ctrl + a 然后按下 :sessionname new_name

注意这里的 Ctrl + a 是 screen 的 prefix, 还有命令之前的冒号一定要加。

如果在 screen 外

screen -S old_name -X sessionname new_session_name

上面两个方法可以修改真正的 session name 但是在并不会修改窗口的名字,如果要修改界面窗口的名字则需要

Ctrl + a 然后使用 Shift + a 再输入名字,则能够修改窗口显示的名字

切换多个 Screens

Ctrl-a n        下一个 screen
Ctrl-a p        上一个
Ctrl-a 0-9
Ctrl-a space    按 0 - 9 顺序切换
Ctrl-a w        显示所有窗口列表
Ctrl-a c        创建新的
Ctrl-a k        杀掉 screen

Copy 模式

类似 Tmux ,使用 Ctrl-a [ 进入 copy 模式,在 copy mode 下可以复制,搜索等等,类似 vim

Ctrl-b      PageUp
Ctrl-f      PageDown
0           行首
$           行尾
Space       标记起点,第二次标记结束
Esc         结束 Copy 模式

Ctrl-a ] 粘贴,可以将 Copy 模式中选定的内容粘贴上。

高阶

screen 可以在 /etc/screenrc$HOME/.screenrc 两个文件中添加更多的配置。比如绑定快捷键,设定启动窗口,用户控制等等。

reference