全部產品
Search
文件中心

:Linux系統下如何保持進程在SSH用戶端斷開後仍繼續運行?

更新時間:Nov 06, 2025

方案選擇

為防止 SSH 會話關閉導致正在啟動並執行命令被中斷,請根據需求選擇以下任一方案。

方案一:使用nohup&命令

nohup 命令可使命令在終端關閉後繼續運行,& 符號可將進程置於後台運行。

  1. 將命令置於後台執行。

    將輸出及錯誤重新導向至自訂的[your_log_file]檔案中。

    sudo nohup [your_command] >[your_log_file] 2>&1 &
    以後台執行bash hello.sh並將輸出寫入目前的目錄的新檔案output.log為例,需執行sudo nohup bash hello.sh > output.log 2>&1 &
  2. 查看命令輸出內容。

    sudo tail -f [your_log_file]
  3. 結束進程。

    重要

    結束進程會結束命令或任務,請謹慎操作。

    1. 查看進程PID。[your_command]替換為第1步後台執行的指令。

      sudo ps aux | grep "[your_command]"
      以執行sudo nohup bash hello.sh > output.log 2>&1 &為例,需執行sudo ps aux | grep "bash hello.sh"
    2. 使用sudo kill [進程PID]>命令結束進程。

方案二:使用 screen工具

  1. 安裝screen工具。

    • Alibaba Cloud Linux、CentOS類型

      sudo yum install -y screen
    • Debian、Ubuntu類型

      sudo apt-get install -y screen
  2. 建立並進入新會話。

    [Name]為自訂會話名稱。

    screen -S [Name]
    以建立一個名為mysession的會話為例,需執行sudo screen -S mysession,在新會話中執行命令。
  3. 在新會話中執行目標任務。

  4. 分離會話。

    同步選取Ctrl+A+D鍵,分離當前 screen 會話,此時進程在SSH用戶端斷開後仍可繼續運行。

  5. 恢複會話。

    1. 查看會話進程PID,用於後續恢複。

      sudo screen -ls
      There is a screen on:
              2046.mytask     (Detached)
      1 Socket in /run/screen/S-root.

      樣本中screen會話進程PID為2046

    2. 恢複對背景工作的控制。

      [PID]為上一步擷取的PID。

      sudo screen -r -d [PID]
      以恢複會話進程PID為2046的會話為例,需執行sudo screen -r -d 2046
  6. 登出會話。

    重要

    登出會話會結束在此會話中執行命令或任務,請謹慎操作。

    [PID]請替換為從4.a擷取的會話進程PID

    sudo kill [PID]