在雲端伺服器ECS Linux 系統中,通常我們在執行一些運行時間比較長的任務時,必須等待執行完畢才能斷開SSH 連線或關閉客戶端軟體,否則可能會導致執行中斷。本文介紹幾種保障程序在使用者退出登入後持續運作的方法。
透過 管理終端 會登入伺服器的本機會話(console)口,在該終端執行的程式不會受到 SSH 登入使用者登出的影響。具體操作方式如下:
1. 透過 管理終端機 登入伺服器。
2. 執行所需程式或腳本。
3. 下次需要查看任務執行狀態時,再次連線管理終端查看即可。
nohup 的作用顧名思義,它使得後面的指令不會回應掛斷(SIGHUP)訊號。也就是說,透過遠端登入執行 nohup 後,即使登出登入後,程式還是會正常執行。通常情況下,nohup 指令最後會跟上 & 字符,表示將這個指令放至後台執行,這樣才能真正做到將這個指令放至後台持續的執行。
操作範例:
1. 正常的執行指令為 bash hello.sh,執行結果為每秒輸出一行的小程式:
2. 在指令頭尾分別加上nohup 和&,變成nohup bash hello.sh &,可以看到nohup 輸出了一行訊息,再按下回車鍵就跳回了shell 指令行,此時指令已經在背景執行了,nohup 將指令的輸出重新導向至目前目錄的nohup.out 檔中。同時注意到 nohup 會將對應程式的 PID 輸出,PID 可用來需要中斷行程時 kill 行程。
3. 透過 tail -f nohup.out 可以持續的查看 nohup.out 的輸出,達到監視程式的效果。
4. 在指令中也可以使用重定向將程式的輸出改為自己想要的檔名,如 nohup bash hello.sh >hello .log &,則程式的輸出就會寫到hello.log 檔案中。
5. 若程式不會自動退出,那麼此時需要使用 kill 指令來結束進程。例如,可以使用指令 kill -TRM
使用限制:
nohup 通常用於執行無幹預的自動化程序或腳本,無法完成帶有互動的操作。
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 进程列表
如下圖
然後進行所需操作,例如執行腳本、執行程式等等。
如下圖範例:建立ftp連線後台下載傳輸檔案
#3. 退出儲存
前述ftp 操作範例開始傳輸後,在視窗中鍵入Ctrl+a 鍵,再按下d 鍵,就可以登出SSH 登錄,但不會影響screen 程式的執行。
4. 儲存會話以便繼續執行
可以利用 screen 這種功能來管理的遠端會話。操作步驟概述:
正常SSH 登入伺服器
#建立screen 視窗
執行所需任務
需要暫時中斷退出時,按Ctrl +d 儲存退出
#需要繼續工作時,再次SSH 登入伺服器,然後直接執行 screen -r -d 恢復會話即可。
#
以上是Linux中SSH客戶端斷開後保持進程繼續運行配置方法的具體介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!