screen是GNU计划开发的用于终端命令行的管理工具,可以新建和管理多个终端命令行会话,并提供切换,分离,挂接等相应的功能。
screen其实就是Linux虚拟终端,可以用它创建多个虚拟终端,每个终端可以创建1~10个窗口,每个窗口相当于一个Linux Shell会话窗口,可执行的操作和正常Shell完全一样。其重要的特点就是终端断开连接后,screen新建的命令行会话中的程序和任务是保存在后台运行的,不会因为终端窗口关闭或者断开连接而终止执行。
详细说明参见GNU Screen官方站点。
screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]
-A :将所有的视窗都调整为目前终端机的大小。
-d <作业名称>:将指定的screen作业离线。
-h <行数>:指定视窗的缓冲区行数。
-m:即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>:恢复离线的screen作业。
-R:先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s:指定建立新视窗时,所要执行的shell。
-S <作业名称>:指定screen作业的名称。
-v:显示版本信息。
-x:恢复之前离线的screen作业。
-ls或--list:显示目前所有的screen作业。
-wipe:检查目前所有的screen作业,并删除已经无法使用的screen作业。
screen -S yourname: 新建一个叫yourname的session;
screen -ls: 列出当前所有的screen session,注意显示的screen会话的命名格式是pid.name,其中pid指的是screen的进程号,name就是screen会话的名称。
screen -r yourname: 回到yourname这个session;
screen -d yourname: detach某个session;
screen -d: detach当前session;
screen -d -r yourname: 分离已经连接的session,重新回到yourname。
exit:关闭当前窗口,并且切换到下一个窗口(当退出最后一个窗口时,该screen会话自动终止,并且退回到原始shell状态)。
进入一个screen会话中,才可以切换窗口,在每个screen session下,所有快捷键都以Ctrl+a开始。常用快捷键如下:
Ctrl+a+?:显示所有键绑定信息。
Ctrl+a+c:创建一个新的运行shell窗口并切换到该窗口。
Ctrl+a+n:切换到下一个window。
Ctrl+a+p:切换到前一个window。
Ctrl+a+0..9:切换到第0..9个window。
Ctrl+a [Space]:由视窗0循序切换到视窗9
Ctrl+a+d:分离当前screen会话,即退出当前screen会话。将目前的screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 Ctrl+a+z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
Ctrl+a Ctrl+a:在两个最近使用的window间切换。
Ctrl+a+x:锁住当前的window,需用用户密码解锁。
Ctrl+a+w:显示所有窗口列表。
Ctrl+a+t:time,显示当前时间和系统的平均负载(Load Average,是一段时间内系统的平均负载,这个一段时间一般取1分钟、5分钟、15分钟)。
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 选定的内容贴上。