使用多個 screen
視窗
若要同時使用多個互動式 shell,最方便的方式是在一個 screen
工作環境中建立多個「視窗」,而每一個視窗都可以提供一個獨立的 shell 給使用者進行互動式的操作,這樣的作法會比使用多個 screen
工作環境方便,尤其是在切換不同的 shell 時不用卸離再重新連接。
在 screen
工作環境中若要建立新的視窗,可以按下 Ctrl
+ a
後,再按下 c
鍵(create),這樣就會建立一個新的視窗,並出現一個獨立的互動式 shell。
若要在不同的視窗之間切換,可以按下 Ctrl
+ a
後,再按下 n
鍵(next),這樣就會切換至下一個視窗,若要切換至錢一個視窗,則可以按下 Ctrl
+ a
後,再按下 p
鍵(previous)。
紀錄所有動作
screen
除了提供獨立的工作環境之外,它還可以把使用者所有的動作記錄下來。
若要開啟 screen
的紀錄功能,可以按下 Ctrl
+ a
後,再按下 H
鍵(請注意這裡是大寫的 H
,也就是要按著 Shift
鍵再按 h
鍵),這時候在畫面的左下角會出現紀錄檔名稱,例如:
Creating logfile “screenlog.0“
就像這樣:
這樣 screen
就會將所有的動作都紀錄再這個檔案中,若要結束紀錄功能,只要再按一次 Ctrl
+ a
與 H
鍵即可。
除了在 screen
工作環境中動態開啟紀錄功能之外,也可以在一開始執行 screen
指令時就使用 -L
參數直接開啟:
screen -L
由 screen
所產生的紀錄檔因為包含一些跳脫序列(Escape Sequences),所以如果使用一般的文字編輯軟體開啟的時候,會出現一些亂碼,這是因為一般的軟體無法正確解析這些跳脫序列的關係,要查看紀錄檔最方便的作法就是直接使用 cat
指令在終端機中印出來:
cat screenlog.0
如果要把跳脫序列直接拿掉,可以使用這個 alias:
alias stresc='sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"' stresc screenlog.0 > screenlog.0.txt
這樣轉出來的 screenlog.0.txt
就可以使用一般的文字編輯軟體開啟了。
鎖定 screen
螢幕
如果在使用 screen
管理伺服器時,要暫時離開電腦,也可以使用 screen
的螢幕鎖定功能,當要鎖定螢幕時可按下 Ctrl
+ a
後,再按下 x
鍵,這樣螢幕就會被鎖住,就像這樣:
若要解開鎖定,則輸入自己的 Linux 系統帳號的密碼即可。
設定 screen
工作環境密碼
除了鎖定螢幕之外,screen
也可以設定工作環境的密碼,這個密碼是在卸離後要重新連接時用的。要設定這個密碼可以在 screen
的設定檔 $HOME/.screenrc
中加入:
password crypt_password
其中 crypt_password
就是經過加密編碼後的密碼,要產生加密編碼的密碼可以使用 mkpasswd
這個指令,例如將 sealmemory
這個密碼進行編碼,則執行:
mkpasswd sealmemory
輸出為
iIPFln8hvJZ6c
這個就是經過加密編碼後的密碼,取得這個密碼後,就可以把它寫入 $HOME/.screenrc
,就像這樣:
password iIPFln9hvJZ6c
這樣下次在 screen
工作環境卸離後再重新連接時,它就會要求輸入這個密碼:
如果有在 $HOME/.screenrc
中設定密碼,則在鎖定 screen
螢幕功能時,解鎖的時候就會要求輸入兩次密碼,一次是 Linux 系統的密碼,另外一次是自己設定的密碼。
離開 screen
工作環境
若要離開 screen
工作環境有幾種不同的方式,如果你的工作還沒做完,想要暫時離開,則使用上面介紹的卸離功能(Ctrl
+ a
與 d
),而如果是工作都已經做完了,則可直接以 exit
指令離開 shell,在 screen
工作環境中所有的 shell 都結束後,screen
會自動結束,另外也可以使用 Ctrl
+ a
與 k
(kill),直接關閉整個 screen
工作環境。
screen
參數與操作指令速查表
因為 screen
的指令太多了,無法一一介紹,這裡將常用的 screen
操作指令的簡略說明整理出來,方便大家查閱。
screen
參數表
screen 參數 |
說明 |
-c file |
使定使用的設定檔(預設為 $HOME/.screenrc ) |
-d [pid.tty.host] |
強制將指定的 screen 工作環境卸離 |
-L |
開啟自動紀錄功能 |
-ls 或 -list |
列出目前所有執行中的 screen 工作環境 |
-r [pid.tty.host] |
重新連接執行中的 screen 工作環境 |
-R |
重新連接最近卸離的 screen 工作環境 |
-U |
以 UTF-8 模式執行 |
-wipe [match] |
將廢棄的 screen 工作環境清除 |
screen
操作指令表
screen 參數 |
說明 |
Ctrl + a 與 c |
建立新 screen 視窗 |
Ctrl + a 與 Ctrl + a |
切換至上一個 screen 視窗 |
Ctrl + a 與數字鍵 0 到 9 |
切換至指定編號的 screen 視窗 |
Ctrl + a 與 n |
切換至下一個的 screen 視窗 |
Ctrl + a 與 p |
切換至下一個的 screen 視窗 |
Ctrl + a 與 w |
列出目前所有的 screen 視窗 |
Ctrl + a 與 " |
列出目前所有的 screen 視窗,並可用上下鍵選擇要切換的設窗 |
Ctrl + a 與 k |
關閉目前的 screen 視窗 |
Ctrl + a 與 d |
卸離 screen 工作環境 |
Ctrl + a 與 Esc 鍵(或 Ctrl + a 與 [ ) |
進入複製模式(copy mode),可用方向鍵操作捲軸,或用 / 與 ? 來搜尋,按下空白鍵開始選取要複製的內容,選取完成後再按下第二次空白鍵,即可複製,隨後使用 Ctrl + ] 可貼上複製的內容。 |
Ctrl + a 與 S |
將畫面分割成上下兩個區域 |
Ctrl + a 與 Q |
關閉分割畫面 |
Ctrl + a 與 Tab 鍵 |
切換分割畫面 |
Ctrl + a 與 t |
顯示目前系統的時間與負載狀況 |
Ctrl + a 與 a |
送出 Ctrl + a |
Ctrl + a 與 ? |
顯示說明 |
Ctrl + a 與 v |
顯示版本資訊 |
Ctrl + a 與 x |
鎖定 screen 螢幕 |
Ctrl + a 與 H |
開啟或結束 screen 紀錄功能 |
Ctrl + a 與 C |
清除 screen 視窗中的內容 |
Ctrl + a 、D 與 D |
強力卸離,卸離 screen 工作環境之後,直接登出 |
Ctrl + a 與 Ctrl + g |
視覺化鈴聲(visual bell)切換 |
Ctrl + a 與 i |
顯示目前 screen 視窗的資訊 |
Ctrl + a 與 l |
重繪目前 screen 視窗的內容 |
參考資料:Tecmint、GNU Screen
繼續閱讀: 12
賽恩
最近買樹苺來玩
第一次接觸linux
謝謝版大啦!
以學習以學習
辛苦你ㄌ
G. T. Wang
🙂
Mars
Great sharing! Thanks!