首頁 > 程序管理 > nohup

nohup: 登出後仍持續執行

此工具可確保即使終端關閉或 SSH 連線中斷,命令也能繼續執行。對於需要在後台執行長時間任務(例如伺服器啟動、大檔案下載、批次處理等)而言,它是必不可少的。

什麼是 nohup?

nohup 是 'No Hang Up' 的縮寫,表示忽略掛斷訊號(HUP 訊號)並執行命令。通常,關閉終端視窗會同時終止正在執行的程式,但使用 nohup 就像一個盾牌,可以防止這種情況發生。

3 個核心概念

  • 忽略 HUP 訊號: 忽略使用者登出時系統發送的終止訊號 (SIGHUP),使程序持續運行。
  • nohup.out: 如果未指定儲存檔案,執行結果(輸出內容)將自動儲存到 `nohup.out` 檔案中。
  • & (後台執行): 單獨使用 nohup 會佔用終端。通常在命令末尾加上 `&` 將其發送到後台執行。

主要語法及選項 (Shell)

nohup 本身沒有複雜的選項。它主要結合 **要執行的命令** 和 **重定向(指定輸出方向)** 來使用。

1. 基本執行配置

2. 日誌(輸出)管理

3. 幫助

生成的命令:

請試著組合命令。

這個 Django 應用程序是一個技術指南文檔,旨在為用戶輕鬆解釋 Linux 的各種命令。

`nohup` 執行命令。

請將上述選項組合在一起,與 AI 一同虛擬執行命令。

使用情境範例

這是實際工作中最常用的 nohup 模式。

最基本的使用方法

nohup ./backup.sh &

在後台執行腳本。輸出將累積在 `nohup.out` 中。

指定日誌檔案名稱(推薦)

nohup python3 app.py > my-app.log 2>&1 &

將日誌儲存到 `my-app.log` 而不是 `nohup.out`。`2>&1` 表示將錯誤訊息也儲存到同一個檔案中。

不儲存日誌執行

nohup ./heavy-task.sh > /dev/null 2>&1 &

當不需要輸出內容或輸出過多可能導致磁碟空間不足時,將輸出丟棄到 `/dev/null`。

尋找正在執行的 nohup 程序

ps -ef | grep app.py

使用 `ps` 命令檢查正在執行的程序。

安裝

nohup 是 'GNU Coreutils' 中包含的基本命令,幾乎所有 Linux 發行版都已預裝。

檢查安裝

通常無需額外安裝。您可以使用以下命令檢查是否已安裝。

檢查版本

nohup --version

提示與注意事項

實用提示

  • 已經在執行的任務怎麼辦?: 如果忘記使用 nohup 而直接執行了命令,可以先用 `Ctrl+z` 停止它,然後用 `bg` 將其轉為後台執行,再使用 `disown -h %1` 命令來達到 nohup 的效果。
  • 終止方法: 透過 nohup 執行的程序無法用 `Ctrl+c` 終止。您需要使用 `ps -ef | grep [名稱]` 找到 PID(程序 ID),然後使用 `kill -9 [PID]` 命令來終止它。
  • 注意磁碟空間: 長時間執行的程式如果不斷向 `nohup.out` 寫入日誌,檔案可能會變得非常巨大,導致伺服器停止。請定期清空或使用 `/dev/null`。

相關命令

功能上相似或經常一起使用的命令。



相同類別命令