screen命令

小亮520cl發表於2016-05-19
操作遠端伺服器,最怕網路不好.
有時候執行一個作業,由於網路閃斷,前功盡棄.

前幾天發現了Linux Screen這個命令,很好很強大啊.

安裝
yum install screen -y 

screen命令建立的終端,父程式不是sshd登入會話,所以sshd連線斷了,並不影響screen會話.

首先,建立一個Screen會話,然後進入建立的終端.
[report@localhost ~]$ screen -dmS tomcat
[report@localhost ~]$ screen -r tomcat

進入終端之後,可以執行作業.使用Ctrl+A+D 臨時退出.
(Exit和Ctrl+c 會永久退出)

過了十天半個月,想起來之前還跑了一個作業,可以恢復會話
screen -r tomcat

進入會話之後,一切猶如昨日.很神奇.

screen -list
檢視所有會話.

如果有如下報錯
Cannot open your terminal '/dev/pts/1'

執行如下命令即可
script /dev/null 

具體神奇的原因,我也不知道,請參考如下連結:
http://blog.sina.com.cn/s/blog_704836f401010osn.html
http://www.cnblogs.com/mchina/archive/2013/01/30/2880680.html

語法

# screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]

引數說明

-A  將所有的視窗都調整為目前終端機的大小。
-d <作業名稱>  將指定的screen作業離線。
-h <行數>  指定視窗的緩衝區行數。
-m  即使目前已在作業中的screen作業,仍強制建立新的screen作業。
-r <作業名稱>  恢復離線的screen作業。
-R  先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
-s  指定建立新視窗時,所要執行的shell。
-S <作業名稱>  指定screen作業的名稱。
-v  顯示版本資訊。
-x  恢復之前離線的screen作業。
-ls或--list  顯示目前所有的screen作業。
-wipe  檢查目前所有的screen作業,並刪除已經無法使用的screen作業。


常用screen引數

screen -S yourname -> 新建一個叫yourname的session
screen -ls -> 列出當前所有的session
screen -r yourname -> 回到yourname這個session
screen -d yourname -> 遠端detach某個session
screen -d -r yourname -> 結束當前session並回到yourname這個session

在每個screen session 下,所有命令都以 ctrl+a(C-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 選定的內容貼上



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-2103302/,如需轉載,請註明出處,否則將追究法律責任。

相關文章