Linux 命令不中斷(screen nohup)

文章目錄


參考:
Linux命令查詢

Screen

GNU Screen是一款由GNU計劃開發的用於命令行終端切換的自由軟件。用戶可以通過該軟件同時連接多個本地或遠程的命令行會話,並在其間自由切換。

GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了統一的管理多個會話的界面和相應的功能。


  • 會話恢復

    只要Screen本身沒有終止,在其內部運行的會話都可以恢復。這一點對於遠程登錄的用戶特別有用——即使網絡連接中斷,用戶也不會失去對已經打開的命令行會話的控制。只要再次登錄到主機上執行screen -r就可以恢復會話的運行。同樣在暫時離開的時候,也可以執行分離命令detach,在保證裏面的程序正常運行的情況下讓Screen掛起(切換到後臺)。這一點和圖形界面下的VNC很相似。

  • 多窗口

    在Screen環境下,所有的會話都獨立的運行,並擁有各自的編號、輸入、輸出和窗口緩存。用戶可以通過快捷鍵在不同的窗口下切換,並可以自由的重定向各個窗口的輸入和輸出。Screen實現了基本的文本操作,如複製粘貼等;還提供了類似滾動條的功能,可以查看窗口狀況的歷史記錄。窗口還可以被分區和命名,還可以監視後臺窗口的活動。

  • 會話共享

    Screen可以讓一個或多個用戶從不同終端多次登錄一個會話,並共享會話的所有特性(比如可以看到完全相同的輸出)。它同時提供了窗口訪問權限的機制,可以對窗口進行密碼保護

  • Screen命令語法:
    screen [-AmRvx -ls -wipe][-d <作業名稱>][-h <行數>][-r <作業名稱>][-s ][-S <作業名稱>]

  • Screen命令參數:
    -A -[r|R] 將所有的視窗都調整爲目前終端機的大小。
    -c filename 用指定的filename文件替代screen的配置文件’.screenrc’.
    -d [pid.tty.host] 斷開screen進程(使用該命令時,screen的狀態一定要是Attached,也就是說有用戶連在screen裏)。一般進程的名字是以pid.tty.host這種形式表示(用screen -list命令可以看出狀態)。
    -D [pid.tty.host] 與-d命令實現一樣的功能,區別就是如果執行成功,會踢掉原來在screen裏的用戶並讓他logout。
    -h <行數>   指定視窗的緩衝區行數。
    -ls或–list 顯示目前所有的screen作業。
    -m 即使目前已在作業中的screen作業,仍強制建立新的screen作業。
    -p number or name 預先選擇一個窗口。
    -r [pid.tty.host] 恢復離線的screen進程,如果有多個斷開的進程,需要指定[pid.tty.host]
    -R 先試圖恢復離線的作業。若找不到離線的作業,即建立新的screen作業。
    -s shell 指定建立新視窗時,所要執行的shell。
    -S <作業名稱> 指定screen作業的名稱。(用來替代[pid.tty.host]的命名方式,可以簡化操作).
    -v 顯示版本信息。
    -wipe 檢查目前所有的screen作業,並刪除已經無法使用的screen作業。
    -x 恢復之前離線的screen作業。


  • Screen命令的常規用法:
    screen -d -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶再連接。
    screen -D -r:連接一個screen進程,如果該進程是attached,就先踢掉遠端用戶並讓他logout再連接
    screen -ls或者-list:顯示存在的screen進程,常用命令
    screen -m:如果在一個Screen進程裏,用快捷鍵crtl+a c或者直接打screen可以創建一個新窗口,screen -m可以新建一個screen進程。
    screen -dm:新建一個screen,並默認是detached模式,也就是建好之後不會連上去。
    screen -p number or name:預先選擇一個窗口。

  • screen session 下,所有命令都以 ctrl+a 開始。
    ctrl+a ? 顯示所有鍵綁定信息
    ctrl+a c 創建一個新的運行shell的窗口並切換到該窗口
    ctrl+a n Next,切換到下一個 window
    ctrl+a p Previous,切換到前一個 window
    ctrl+a 0…9 切換到第 0…9 個 window
    Ctrl+a [Space] 由視窗0循序切換到視窗9
    ctrl+a 在兩個最近使用的 window 間切換
    ctrl+a x 鎖住當前的 window,需用用戶密碼解鎖
    ctrl+a d detach,暫時離開當前session,將目前的 screen session (可能含有多個 windows) 丟到後臺執行,並會回到還沒進 screen 時的狀態,此時在 screen session 裏,每個 window 內運行的 process (無論是前臺/後臺)都在繼續執行,即使 logout 也不影響。
    ctrl+a z 把當前session放到後臺執行,用 shell 的 fg 命令則可回去。
    ctrl+a w 顯示所有窗口列表
    ctrl+a t Time,顯示當前時間,和系統的 load
    ctrl+a k kill window,強行關閉當前的 window
    ctrl+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
    ctrl+a ] Paste,把剛剛在 copy mode 選定的內容貼上

[root@hatch ~] screen       #創建一個screen會話

[root@hatch ~] screen -S test      #創建一個帶名字的screen會話,並且attached模式

[root@hatch ~] screen -dm test1    #並默認是detached模式,也就是建好之後不會連上去。

[root@hatch ~] screen -d -r test2  #結束當前screen並回到test2這個screen

[root@hatch ~] screen -ls           #查看所有會話

[root@hatch ~] screen -r yourname  #回到yourname這個session
There are screens on:
        8504.test2      (Detached)
        8010..hatch     (Detached)
        8060.test1      (Detached)
        6275.test       (Attached)
        6199.pts-3.hatch        (Detached)
5 Sockets in /var/run/screen/S-root.

[root@hatch ~] screen -r 8060(or test1)    #恢復到以前的離線screen進程

[root@hatch ~] Ctrl+a+d                    #按Ctrl+a,然後再按d即可保留Screen
[detached]                                  #這時會顯示出這個提示,說明已經保留好Screen了

[root@hatch ~] exit                        #如果你工作完成的話,這樣就表示成功退出了
[screen is terminating]

[root@hatch ~] Ctrl+a+n      #下一個screen 會話
[root@hatch ~] Ctrl+a+p      #上一個screen 會話
[root@hatch ~] Ctrl+a+c      #創建新的screen 會話
screen -X -S [session # you want to kill] quit,關閉會話
screen -r session_name #進入會話
screen -r session_name #創建會話

nohup

  • 用法
    用法:nohup 命令 [參數]…
     或:nohup 選項
    忽略掛起信號運行指定的命令。
    –help 顯示此幫助信息並退出
    –version 顯示版本信息並退出
    如果標準輸入是一個終端,重定向自/dev/null。
    如果標準輸出是一個終端,儘可能將輸出添加到"nohup.out",
    否則添加到"$HOME/nohup.out"。
    如果標準錯誤輸出是一個終端,重定向它到標準輸出。
    要保存輸出內容到一個文件,使用 “nohup COMMAND > FILE” 形式的命令。
  • 注意:您的shell 內含自己的nohup 程序版本,它會覆蓋這裏所提及的相應
    版本。請查閱您的shell 文檔獲知它所支持的選項。
[root@localhost test] nohup crontab_php.sh test &   #退出後繼續執行sh文件
nohup crontab_php.sh >test 2>&1 &      
例子說明:
#退出後繼續執行sh文件,將標準錯誤2重定向到標準輸出1,然後將標準輸出導入文件,結果就是包含了標準輸出和標準輸入
nohup ./program >/dev/null 2>&1 &   #後臺運行程序,並將所有日誌丟棄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章