实用的 screen 终端机管理程式
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 的相关指令
- 启动 Screen 程式,开始一个 Session:
$ screen
或指定 Id
$ screen -S SessionId
- 查看同一帐号共开启过多少个 Session 及其 Id:
$ screen -ls
- 取回被脱离执行的 Session:
$ screen -r
或
$ screen -r SessionId
- 将其它的 Session 强制脱离:
$ screen -d
或
$ screen -d SessionId
这功能适用于原本操作的电脑当机或断线了,让你可以在下次取回还在主机中执行的 Session。
- 同步操作终端机 Session (两边必须登入相同的帐号):
$ screen -x
或
$ screen -x SessionId
- 移除 Session:
$ screen -wipe SessionId
模拟页签显示
如果要在画面底部秀出现在在哪个编号的 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 很实用,于是我在 bashrc 建立两个 screen 指令的别名:
alias scr='screen -d -r Normal || screen -S Normal' alias scl='screen -ls'
我只要登入终端机就先打一次 scr,以取回上一次没关闭的 Session。如果没有上一次没关闭的 Session,则会建立一个新的 Session。
scl 则可以列出目前有几个属于我的 session。
No comments yet.