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&lt;作業名稱&gt;

就會新增一個叫做”作業名稱”的Screen,或是直接使用

# screen

由系統自動生成名稱。

跳出Screen (不中斷作業)

按 Ctrl + A + D ,便可以離開當下Screen.

查看當下所有的Screen

# screen -ls

會輸出像是這樣子的訊息:

[[email protected]]# 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


 

Comments

Firefox 複製中文網址 變成亂碼
Linux指令 – rm&rmdir指令 刪除檔案/資料夾

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料