Posts Tagged ‘ Terminal

实用的 screen 终端机管理程式

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

首先执行 Screen 程式,开始一个 Session:

$ screen

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

$ tty

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

以快速键操作

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

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

    screen -r

    将所有 Session 叫回来继续操作。

  • 重新命名 Session:
    Ctrl + A⇧Shift + A
  • 显示日期、主机名称及负载:
    Ctrl + ACtrl + T
  • 将画面暂停 (程式仍继续执行):
    Ctrl + ACtrl + S
  • 将暂停的画面恢复:
    Ctrl + ACtrl + 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 特定名称,然后另一端的登入者:

  1. 以相同的帐号登入主机
  2. screen -ls 查看要取回的终端机 Session
  3. 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。

参考网页

return top