linux screen 命令 :離線運行程序


screen工具是linux下虛擬終端的一個常用工具。在 發現這個工具之前,筆者經常在遠程ssh中運行需要長時間處理數據的命令,比如遠程編譯安裝軟件,如果在編譯的過程中網絡斷開,那這個編譯進程就會停止, 造成想不到的后果。自從有了screen命令,我再也不用怕網線不穩和運行需要長時間處理數據的命令。

screen在redhat,centos系統中的安裝命令是:yum install screen

 

screen案例

   新建一個lnmp會話:screen -S lnmp(lnmp為會話名,可自己定義)

   離開會話並讓程序斷續運行:ctrl a d (按住ctrl不放,分別按 a 和 d)

   恢復后台運行的會話:screen -r lnmp(lnmp為自己定義的會話名)

   顯示所有screen創建的會話:screen -ls

   在會話里執行exit命令會話是結束運行並退到shell中

 

參  數:

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

 

 

 

1,開啟一個screen並進入:

screen -S test1        #這里用-S表示給screen起名字,以后切換的時候比較方便。這時就進去了screen test1了。里面可以跑一些程序。

2,退出該screen:

Ctrl-a d                       #這里的ctrl-a表示同時按ctrl鍵和a鍵,然后再單獨按d鍵。這時退到跟終端。

3,在根下查看開啟的所有screen:

screen -ls                  # 比如會有25764.test1     (Detached)等。

4,在根下進入某個screen:

screen -r test1          #這時又進入到指定的screen session中,或者screen -r 25764。

5,關閉該session:

exit                              #在該screen中退出,退到根下。

 

6,強制連接,踢掉原來的

screen -D -r 20791

screen -x -r 20791(共享原來的)

7,當前窗口假死,強制關閉當前窗口,跳到下一個

Ctrl-a  K

8,上翻

Ctrl-a  Ctrl-[  

語  法:

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

補充說明:

screen為多重視窗管理程序。此處所謂的視窗,是指一個全屏幕的文字模式畫面。通常只有在使用telnet登入主機或是使用老式的終端機時,才有可能用到screen程序。

 

常用screen參數:

在每個screen session 下,所有命令都以 ctrl+a(C-a) 開始

C-a ? -> Help,顯示簡單說明
C-a c -> Create,開啟新的 window
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 -> Windows,列出已開啟的 windows 有那些 
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://justdo2008.iteye.com/blog/1888772


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM