What is “screen” Command#
這個指令可以於背景創造多個終端 Session,用於多線程的操作,並且可以輕易的在各個 Session 之間切換,且在用戶登出後,Session 仍可在背景運作。
Basic Using#
以下是常見的參數:
-ls
觀看存在背景的-r [id]
回復互動視窗,指定 ID [id],若背景只有一個 session 則不用指定。-S [n]
指定一個名為 [n] 且已存在的 session,若不存在則創建一個 session 並指定名稱 [n]。(也可以不指定 [n])-x [id]
Attach 一個 session,與-r
有些相似,但可以多人使用。-X [cmd]
在創建 session 時指定在該 session 啟動完畢後欲執行的指令。也可以搭配-S
指定要執行指令的 session。-d [id]
Detach session,用於將正在使用-r
互動的視窗給移至背景(正在被使用-r
的視窗是無法被其他使用者再次-r
的,因此需要先-d
)。該操作可遠端執行,可以指定 Session ID [id]。-rd [id]
回復視窗之前 detach 其他視窗,等同於先執行-d
後執行-r
。-d
-m
,-dm
Detach mode, 於 detach 模式下啟動一個 session。
先創建 session 後按下 Ctrl
+a
d
可以將 session detach。
Example#
創建名為「example」的 Session#
1screen -S example
查看當前存在的 Session#
1$ screen -ls 2There is a screen on: 3 43434.example (09/17/22 15:06:45) (Attached) 41 Socket in /run/screen/S-Bob.
若是該 session 生命週期已經結束,則會被標示「
dead
」,使用參數-wipe
可以移除這些 sessions:
1$ screen -wipe 2There is a screen on: 3 43434.example (09/17/22 15:06:45) (Attached) 41 Socket in /run/screen/S-Bob.
Detach Session (背景運作)#
按下
Ctrl
+a
後按下d
。
Attach 「example」 Session(互動 Session)#
1screen -r example
若是顯示「
There is no screen to be resumed matching example.
」則表示該 session 目前處於attached
狀態。該情況需要先進行
detach
再使用-r
回復,或是一起執行:1screen -rd example
或者使用
-x
的方式:1screen -x example
若是多人用戶的模式下,可以使用
<user>/<screen>
來指定該使用者的 session,例如使用者名為「Bob
」,並該使用者有著一個 session 名為「example
」,則可以:1screen -x Bob/example
退出 Session#
可以透過以下方式來將指定的 session 退出,舉例要退出「example」session:
1screen -X -S example quit
多人模式設定#
以下指令執行於按下 Ctrl
+a
後直接輸入:
:multiuser on
:開啟多人使用模式(允許其他使用者進入 session)。:multiuser off
:關閉多人使用模式。:acladd <user>
:多人使用模式下,允許使用該 session 的使用者白名單。:acldel <user>
:多人使用模式下,移除可使用該 session 的使用者。