Screen 是一款由 GNU 计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。

Screen 可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。

用法

1
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

参数说明

1
2
3
4
5
6
7
8
9
10
11
12
-A # 将所有的视窗都调整为目前终端机的大小
-d # <作业名称> 将指定的 screen 作业离线
-h # <行数> 指定视窗的缓冲区行数
-m # 即使目前已在作业中的 screen 作业,仍强制建立新的 screen 作业
-r # <作业名称> 恢复离线的 screen 作业
-R # 先试图恢复离线的作业。若找不到离线的作业,即建立新的 screen 作业
-s # 指定建立新视窗时,所要执行的 shell
-S # <作业名称> 指定 screen 作业的名称
-v # 显示版本信息
-x # 恢复之前离线的 screen 作业
-ls or --list # 显示目前所有的 screen 作业
-wipe # 检查目前所有的 screen 作业,并删除已经无法使用的 screen 作业

常用命令

1
2
3
4
5
screen -S name # 新建一个叫 name 的 session
screen -ls # 列出当前所有的 session
screen -r name # 回到 name 这个 session
screen -d name # 远程 detach 某个 session
screen -d -r name # 结束当前 session 并回到 name 这个 session

快捷键

在每个 screen session 下,所有快捷键都以 Ctrl + A 开始

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Ctrl + A ? # 显示所有键绑定信息
Ctrl + A C # 创建一个新的运行 shell 的窗口并切换到该窗口
Ctrl + A N # Next,切换到下一个 window
Ctrl + A P # Previous,切换到前一个 window
Ctrl + A 0..9 # 切换到第 0..9 个 window
Ctrl + A [Space] # 由视窗 0 循序切换到视窗 9
Ctrl + A Ctrl + A # 在两个最近使用的 window 间切换
Ctrl + A X # 锁住当前的 window,需用用户密码解锁
Ctrl + A D # detach,暂时离开当前 session,将目前的 screen session(可能含有多个 windows)
丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,
每个 window 内运行的 process(无论是前台/后台)都在继续执行,即使 logout 也不影响
Ctrl + A Z # 把当前 session 放到后台执行,用 shell 的 fg 命令则可回去
Ctrl + A W # 显示所有窗口列表
Ctrl + A T # Time,显示当前时间,和系统的 load
Ctrl + A K # kill window,强行关闭当前的 window
Ctrl + A [ # 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样
Ctrl + B # Backward,PageUp
Ctrl + F # Forward,PageDown
H # High,将光标移至左上角
L # Low,将光标移至左下角
0 # 移到行首
$ # 行末
W # forward one word,以字为单位往前移
B # backward one word,以字为单位往后移
Space # 第一次按为标记区起点,第二次按为终点
Esc # 结束 copy mode
Ctrl + A ] # Paste,把刚刚在 copy mode 选定的内容贴上