在雲服務器 ECS Linux 系統中,通常我們在執行一些運行時間比較長的任務時,必須等待執行完畢才能斷開 SSH 連接或關閉客戶端軟件,否則可能會導致執行中斷。本文介紹幾種保障程序在用戶退出登錄后持續運行的方法。
使用管理終端執行
通過 管理終端 會登錄服務器的本地會話(console)口,在該終端執行的程序不會受到 SSH 登錄用戶退出的影響。具體操作方式如下:
1. 通過 管理終端 登錄服務器。
2. 執行所需程序或腳本。
3. 下次需要查看任務執行狀態時,再次連接管理終端查看即可。
使用 nohup 執行
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 <PID> 來操作,其中 PID 即為之前 nohup 輸出的值,在此例中該值為 1231。
使用限制:
nohup 通常用於執行無干預的自動化程序或腳本,無法完成帶有交互的操作。
使用 screen 執行
安裝 sceen 工具
Linux 系統默認未自帶 screen 工具,需要先進行安裝:
-
CentOS 系列系統: yum install screen
-
Ubuntu 系列系統: sudo apt-get install screen
使用簡介
1. 創建 screen 窗口
1 2 3 |
|
2. 列出 screen 進程,並進入所需 screen
1 |
|
如下圖
然后進行所需操作,比如運行腳本、執行程序等等。
如下圖示例:創建ftp連接后台下載傳輸文件
3. 退出保存
前述 ftp 操作示例開始傳輸后,在窗口中鍵入Ctrl+a 鍵,再按下 d 鍵,就可以退出 SSH 登錄,但不會影響 screen 程序的執行。
4. 保存會話以便繼續執行
可以利用 screen 這種功能來管理的遠程會話。操作步驟概述:
-
正常 SSH 登錄服務器
-
創建 screen 窗口
-
執行所需任務
-
需要臨時中斷退出時,按 Ctrl +d 保存退出
-
需要繼續工作時,再次 SSH 登錄服務器,然后直接執行 screen -r -d 恢復會話即可。
以上就是Linux中SSH客戶端斷開后保持進程繼續運行配置方法的具體介紹的詳細內容,更多請關注php中文網其它相關文章!