Linux Screen指令 登出而不中斷作業!
系統管理員經常地需要使用SSH等遠端登入到Linux伺服器做管理的動作,而經常需要運行一些需要較長時間才能完成的任務,像是系統備份、資料匯入、檔案傳輸等等。 而這些時候,是不是就必須開著SSH畫面不能關機呢?或者是害怕突然斷線?
其實,我們只要運用”Screen” 這個指令,就可以為個別任務建立一個”視窗”,讓它安穩地在裡面運行,還可以隨時退出/回到這個視窗。
以下就對Screen指令做簡單的介紹,
Screen命令語法:
# screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]
Screen命令參數:
-4 解析主機名僅IPv4地址。 -6 解析主機名僅IPv6地址。 -A -[r|R] 將所有的視窗都調整為目前終端機的大小。 -c file 用指定的檔案替代screen的設定檔'.screenrc'. -d (-r) 斷開該screen進程(使用該命令時,screen的狀態一定要是Attached,也就是說有用戶連在screen裡)。一般進程的名字是以pid.tty.host這種形式表示(用screen -list命令可以看出狀態)。 -D [pid.tty.host] 與-d命令實現一樣的功能,區別就是如果執行成功,會踢掉原來在screen裡的用戶並讓他登出。 -h <行数> 指定視窗的緩衝區行數。 -ls或–list 顯示目前所有的screen作業。 -m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。 -p window 預先選擇一個視窗,如果它存在。 -r [session] 恢復離線的screen進程,如果有多個斷開的進程,需要指定[pid.tty.host] -R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。。 -s shell 指定建立新視窗時,所要執行的shell。 -S <作業名稱> 建立Screen時,指定screen作業的名稱。(用來替代[pid.tty.host]的命名方式,可以簡化操作). -v 顯示版本資訊。 -wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。 -x 恢復之前離線的screen作業。
使用 $ screen –help 可以看到更詳盡的說明。
建立Screen
# screen -S<作業名稱>
就會新增一個叫做”作業名稱”的Screen,或是直接使用
# screen
由系統自動生成名稱。
跳出Screen (不中斷作業)
按 Ctrl + A + D ,便可以離開當下Screen.
查看當下所有的Screen
# screen -ls
會輸出像是這樣子的訊息:
[root@localhost]# screen -ls There are screens on: 15699.pts-0.localhost (Detached) 15666.pts-0.localhost (Detached) 15615.pts-0.localhost (Detached) 15275.pts-0.localhost (Detached) 4 Sockets in /var/run/screen/S-root.
而當中15699.pts-0.localhost便為辨識Screen的名稱。
回到某個Screen
# screen -r [session]
覺得名稱太長嗎? 沒關係,可以用省略的寫法,系統也是能夠辨認的! 就像是這樣:
# screen -r 1569 取代 # screen -r 15699.pts-0.localhost
其它常用screen参数
screen -d yourname -> 遠端detach某个session
screen -d -r yourname -> 结束目前session並回到yourname這個session
在每個screen session 下,所有命令都以 Ctrl+A開始:
C-a ? -> 顯示所有鍵綁定資訊
C-a c -> 創建一個新的運行shell的視窗並切換到該視窗
C-a n -> Next,切換到下一個 window
C-a p -> Previous,切換到前一個 window
C-a 0..9 -> 切換到第 0..9 個 window
Ctrl+a [Space] -> 由視窗0循序切換到視窗9
C-a C-a -> 在兩個最近使用的 window 間切換
C-a x -> 鎖住當前的 window,需用使用者密碼解鎖
C-a d -> detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裡,每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
C-a z -> 把當前session放到後臺執行,用 shell 的 fg 命令則可回去。
C-a w -> 顯示所有視窗清單
C-a t -> Time,顯示當前時間,和系統的 load
C-a k -> kill window,強行關閉當前的 window
C-a [ -> 進入 copy mode,在 copy mode 下可以回滾、搜索、複製就像用使用 vi 一樣
C-b Backward,PageUp
C-f Forward,PageDown
H(大寫) High,將游標移至左上角
L Low,將游標移至左下角
0 移到行首
$ 行末
w forward one word,以字為單位往前移
b backward one word,以字為單位往後移
Space 第一次按為標記區起點,第二次按為終點
Esc 結束 copy mode
C-a ] -> Paste,把剛剛在 copy mode 選定的內容貼上
引用資料:http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html