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

在雲服務器 ECS Linux 系統中,一般咱們在執行一些運行時間比較長的任務時,必須等待執行完畢才能斷開 SSH 鏈接或關閉客戶端軟件,不然可能會致使執行中斷。本文介紹幾種保障程序在用戶退出登陸後持續運行的方法。php

 

使用管理終端執行

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

1. 經過 管理終端 登陸服務器。shell

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

3. 下次須要查看任務執行狀態時,再次鏈接管理終端查看便可。bash

使用 nohup 執行

nohup 的做用顧名思義,它使得後面的命令不會響應掛斷(SIGHUP)信號。也就是說,經過遠程登陸執行 nohup 後,即便退出登陸後,程序仍是會正常執行。一般狀況下,nohup 命令最後會跟上 & 字符,表示將這個命令放至後臺執行,這樣才能真正作到將這個命令放至後臺持續的執行。服務器

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

z1-1.png

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

z1-2.png

3. 經過 tail -f nohup.out 能夠持續的查看 nohup.out 的輸出,達到監視程序的效果。ide

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中文網其它相關文章!

相關文章
相關標籤/搜索