nohup(no hang-up)命令用于在后臺運行程序,使其在用戶退出登錄后仍然繼續運行。默認情況下,nohup會忽略掛起(SIGHUP)信號,從而防止進程被系統終止。以下是一些使用nohup的常見方法和注意事項:
nohup command &
command 是你想要在后臺運行的命令。& 將命令放入后臺運行。通常,nohup會將命令的輸出重定向到一個名為 nohup.out 的文件中,除非你指定了其他輸出文件。
nohup command > output.log 2>&1 &
> output.log 將標準輸出重定向到 output.log 文件。2>&1 將標準錯誤輸出重定向到標準輸出,即 output.log 文件。使用 disown 命令:
如果你已經啟動了一個進程,可以使用 disown 命令將其從當前 shell 的作業表中移除,從而防止它被掛起信號終止。
nohup command &
disown
使用 screen 或 tmux:
screen 和 tmux 是終端復用工具,可以在一個終端會話中創建多個獨立的終端窗口,并且即使斷開連接,這些窗口中的進程也會繼續運行。
screen -S mysession
command
# 按 Ctrl+A 然后按 D 鍵分離會話
重新連接會話:
screen -r mysession
使用 systemd 服務:
對于需要長期運行的服務,可以創建一個 systemd 服務單元文件,使其作為系統服務運行。
[Unit]
Description=My Service
[Service]
ExecStart=/path/to/command
Restart=always
[Install]
WantedBy=multi-user.target
將文件保存為 /etc/systemd/system/myservice.service,然后啟用并啟動服務:
sudo systemctl enable myservice
sudo systemctl start myservice
通過這些方法,你可以確保進程在用戶退出登錄或系統重啟后仍然繼續運行。