实用的 screen 终端机管理程式

screen 是一个很方便的终端机管理程式,可以让你在同一个终端机开启多个终端机来操作。加强多工的处理,即使你要离开电脑,也可以将终端机执行脱离,下次登入时再取回来操作。

首先启动 Screen 程式,开始一个终端机 Session:

$ screen

某些终端机视窗会在标题列显示目前在操作的终端机编号,如果没有显示,你也可以输入:

$ tty

来了解你目前正在哪个终端机中。

以快速键操作

切换时的快速键一开始都是 Ctrl + A

  • 新增终端机:
    Ctrl + ACtrl + C
  • 切换到上一个编号的终端机:
    Ctrl + ACtrl + P
  • 切换到下一个编号的终端机:
    Ctrl + ACtrl + N
  • 切换到指定编号的终端机:
    Ctrl + A数字键
  • 切换到下一个编号的终端机:
    Ctrl + ASpace
  • 在两个终端机之间互相切换:
    Ctrl + ACtrl + A
  • 锁定终端机:
    Ctrl + ACtrl + X
  • 显示终端机列表,可供你选取:
    Ctrl + A⇧Shift + "
  • 新视窗的标题列显示所有的终端机编号 (其中有加上 * 表示是目前使用的终端机) :
    Ctrl + ACtrl + W
  • 水平分割视窗 (可以持续分割) :
    Ctrl + A⇧Shift + S
  • 垂直分割视窗 (可以持续分割,只有特定版本才支援,请参考后方的说明) :
    Ctrl + A⇧Shift + |
  • 在分割的视窗做切换:
    Ctrl + ATab
  • 关闭分割的视窗:
    Ctrl + A⇧Shift + Q
  • 将所有终端机脱离(Detach),并回到执行 screen 前的状态:
    Ctrl + ACtrl + D
    在这种状态下,用户可以不须理会这些终端机。不管用户离线或是要从别的地方登入,只要下次登入时执行:

    screen -r

    将所有终端机叫回来继续操作。

  • 重新命名终端机:
    Ctrl + A⇧Shift + A
  • 显示日期、主机名称及负载:
    Ctrl + ACtrl + T
  • 将画面暂停 (程式仍继续执行):
    Ctrl + ACtrl + S
  • 将暂停的画面恢复:
    Ctrl + ACtrl + Q

screen 的相关指令

  • 启动 Screen 程式,开始一个终端机 Session:
    $ screen

    或指定名称

    $ screen -S SessionName
  • 查看同一帐号共开启过多少个终端机 Session 及其 Id:
    $ screen -ls
  • 取回被脱离执行的终端机:
    $ screen -r

    $ screen -r SessionId
  • 将其它的终端机 Session 强制脱离:
    $ screen -d

    $ screen -d SessionId

    这功能适用于原本操作的电脑当机或断线了,让你可以在下次取回还在 Server 中执行的 Session。

  • 同步操作终端机 Session (两边必须登入相同的帐号):
    $ screen -x

    $ screen -x SessionId
  • 移除终端机 Session:
    $ screen -wipe SessionId

模拟页签显示

如果要在画面底部秀出现在在哪个编号的终端机,请编辑 /etc/screenrc 或 ~/.screenrc,加入:

hardstatus alwayslastline "%-w%{= BW}%50>%n %t%{-}%+w%<"

同步作业说明

假设我在我目前所操作的终端机 Session 要分享给另一端的登入者查看,并且可以操作 (或者是我不想将远端登入的用户脱离 Session),则我要先以我的帐号登入主机并且执行 screen -S 特定名称,然后另一端的登入者:

  1. 以相同的帐号登入主机
  2. screen -ls 查看要取回的终端机 Session
  3. screen -x 特定名称screen -x SessionId 进入相同的终端机 Session

垂直分割视窗

因为 screen 只能水平分割视窗,不能充分利用宽萤幕的特性实在有点可惜! 这里有新版可垂直分割功能的 screen:

垂直分割 screen 视窗

请自行编译安装。

参考网页

  1. No comments yet.

  1. No trackbacks yet.

return top

%d 位部落客按了赞: