實用的 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。

參考網頁

  1. No comments yet.

  1. No trackbacks yet.

return top

%d 位部落客按了讚: