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


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

 

使用管理終端執行

通過 管理終端 會登錄服務器的本地會話(console)口,在該終端執行的程序不會受到 SSH 登錄用戶退出的影響。具體操作方式如下:

1. 通過 管理終端 登錄服務器。

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

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

使用 nohup 執行

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

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

z1-1.png

2. 在命令頭尾分別加上 nohup 和 &,變為 nohup bash hello.sh &,可以看到 nohup 輸出了一行信息,再按一下回車鍵就跳回了 shell 命令行,此時命令已經在后台執行了,nohup 將命令的輸出重定向至當前目錄的 nohup.out 文件中。同時注意到 nohup 會將對應程序的 PID 輸出,PID 可用於需要中斷進程時 kill 進程。

z1-2.png

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

z1-3.png

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

screen -S  name

# name可以設置為ssh、ftp,用於標注該 screen 窗口用途

# 示例:screen -S ftp

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

1

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

如下圖
1.png

然后進行所需操作,比如運行腳本、執行程序等等。

如下圖示例:創建ftp連接后台下載傳輸文件

1.png

3. 退出保存

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

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

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

  • 正常 SSH 登錄服務器

  • 創建 screen 窗口

  • 執行所需任務

  • 需要臨時中斷退出時,按 Ctrl +d 保存退出

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

以上就是Linux中SSH客戶端斷開后保持進程繼續運行配置方法的具體介紹的詳細內容,更多請關注php中文網其它相關文章!


免責聲明!

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



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