screen 是一个很方便的终端机管理程式,可以让你在同一个终端机开启多个 Session 来操作,加强多工的处理。即使你要离开电脑,也可以将 Session 执行脱离,或直接关闭终端机,这时执行中的程式还是会继续执行,下次登入终端机时再取回 Session 来操作即可。
首先执行 Screen 程式,开始一个 Session:
$ screen
某些终端机视窗会在标题列显示目前在操作的终端机编号,如果没有显示,你也可以输入:
$ tty
来了解你目前正在哪个终端机中。
以快速键操作
切换时的快速键一开始都是 Ctrl + A
- 新增 Session:
Ctrl + A → Ctrl + C
- 切换到上一个编号的 Session:
Ctrl + A → Ctrl + P
- 切换到下一个编号的 Session:
Ctrl + A → Ctrl + N
- 切换到指定编号的 Session:
Ctrl + A → 数字键
- 切换到下一个编号的 Session:
Ctrl + A → Space
- 在两个 Session 之间互相切换:
Ctrl + A → Ctrl + A
- 锁定 Session:
Ctrl + A → Ctrl + X
- 显示 Session 列表,可供你选取:
Ctrl + A → ⇧Shift + "
- 新视窗的标题列显示所有的 Session 编号 (其中有加上 * 表示是目前使用的 Session) :
Ctrl + A → Ctrl + W
- 水平分割视窗 (可以持续分割) :
Ctrl + A → ⇧Shift + S
- 垂直分割视窗 (可以持续分割,只有特定版本才支援,请参考后方的说明) :
Ctrl + A → ⇧Shift + |
- 在分割的视窗做切换:
Ctrl + A → Tab
- 关闭分割的视窗:
Ctrl + A → ⇧Shift + Q
- 将所有的 Session 脱离(Detach),并回到执行 screen 前的状态:
Ctrl + A → Ctrl + D
在这种状态下,用户可以不须理会这些 Session。不管用户离线或是要从别的地方登入,只要下次登入时执行:
screen -r
将所有 Session 叫回来继续操作。
- 重新命名 Session:
Ctrl + A → ⇧Shift + A
- 显示日期、主机名称及负载:
Ctrl + A → Ctrl + T
- 将画面暂停 (程式仍继续执行):
Ctrl + A → Ctrl + S
- 将暂停的画面恢复:
Ctrl + A → Ctrl + Q
screen 的相关指令
模拟页签显示
如果要在画面底部秀出现在在哪个编号的 Session,请编辑 /etc/screenrc 或 ~/.screenrc,加入:
hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w%<"
同步作业说明
假设我在我目前所操作的终端机 Session 要分享给另一端的登入者查看,并且可以操作 (或者是我不想将远端登入的用户脱离 Session),则我要先以我的帐号登入主机并且执行 screen -S 特定名称,然后另一端的登入者:
- 以相同的帐号登入主机
- 以 screen -ls 查看要取回的终端机 Session
- 以 screen -x 特定名称 或 screen -x SessionId 进入相同的终端机 Session
垂直分割视窗
因为 screen 只能水平分割视窗,不能充分利用宽萤幕的特性实在有点可惜! 这里有新版可垂直分割功能的 screen:
垂直分割 screen 视窗
请自行编译安装。
命令别名
因为 screen 很实用,于是我在 bashrc 建立两个 screen 指令的别名:
alias scr='screen -d -r Normal || screen -S Normal'
alias scl='screen -ls'
我只要登入终端机就先打一次 scr,以取回上一次没关闭的 Session。如果没有上一次没关闭的 Session,则会建立一个新的 Session。
scl 则可以列出目前有几个属于我的 session。
参考网页
近期回响