首頁  >  文章  >  運維  >  Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

黄舟
黄舟原創
2017-05-26 09:29:505455瀏覽

在雲端伺服器ECS Linux 系統中,通常我們在執行一些運行時間比較長的任務時,必須等待執行完畢才能斷開SSH 連線或關閉客戶端軟體,否則可能會導致執行中斷。本文介紹幾種保障程序在使用者退出登入後持續運作的方法。

使用管理終端機執行

透過 管理終端 會登入伺服器的本機會話(console)口,在該終端執行的程式不會受到 SSH 登入使用者登出的影響。具體操作方式如下:

1. 透過 管理終端機 登入伺服器。

2. 執行所需程式或腳本。

3. 下次需要查看任務執行狀態時,再次連線管理終端查看即可。

使用 nohup 執行

nohup 的作用顧名思義,它使得後面的指令不會回應掛斷(SIGHUP)訊號。也就是說,透過遠端登入執行 nohup 後,即使登出登入後,程式還是會正常執行。通常情況下,nohup 指令最後會跟上 & 字符,表示將這個指令放至後台執行,這樣才能真正做到將這個指令放至後台持續的執行。

操作範例:
1. 正常的執行指令為 bash hello.sh,執行結果為每秒輸出一行的小程式:

Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

2. 在指令頭尾分別加上nohup 和&,變成nohup bash hello.sh &,可以看到nohup 輸出了一行訊息,再按下回車鍵就跳回了shell 指令行,此時指令已經在背景執行了,nohup 將指令的輸出重新導向至目前目錄的nohup.out 檔中。同時注意到 nohup 會將對應程式的 PID 輸出,PID 可用來需要中斷行程時 kill 行程。

Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

3. 透過 tail -f nohup.out 可以持續的查看 nohup.out 的輸出,達到監視程式的效果。

Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

4. 在指令中也可以使用重定向將程式的輸出改為自己想要的檔名,如 nohup bash hello.sh >hello .log &,則程式的輸出就會寫到hello.log 檔案中。

5. 若程式不會自動退出,那麼此時需要使用 kill 指令來結束進程。例如,可以使用指令 kill -TRM  來操作,其中 PID 即為先前 nohup 輸出的值,在此例中該值為 1231。

使用限制:

nohup 通常用於執行無幹預的自動化程序或腳本,無法完成帶有互動的操作。

使用screen 執行

安裝 sceen 工具

Linux 系統預設未自帶 screen 工具,需要先安裝:

  • CentOS 系列系統: yum install screen

  • Ubuntu 系列系統: sudo  apt-get  install screen

使用簡介

1. 建立screen 視窗

screen -S  name
# name可以设置为ssh、ftp,用于标注该 screen 窗口用途
# 示例:screen -S ftp

2. 列出screen 進程,並進入所需screen

screen -ls  ##列出 screen 进程列表

如下圖
Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

然後進行所需操作,例如執行腳本、執行程式等等。

如下圖範例:建立ftp連線後台下載傳輸檔案

Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹

#3. 退出儲存

前述ftp 操作範例開始傳輸後,在視窗中鍵入Ctrl+a 鍵,再按下d 鍵,就可以登出SSH 登錄,但不會影響screen 程式的執行。

4. 儲存會話以便繼續執行

可以利用 screen 這種功能來管理的遠端會話。操作步驟概述:

  • 正常SSH 登入伺服器

  • #建立screen 視窗

  • 執行所需任務

  • 需要暫時中斷退出時,按Ctrl +d 儲存退出

  • #需要繼續工作時,再次SSH 登入伺服器,然後直接執行 screen -r -d 恢復會話即可。

 

#

以上是Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn