nohup
(no hang-up)命令在 Linux 系統中用于在用戶退出登錄后繼續運行指定的程序或腳本。以下是一些關于如何安全使用 nohup
命令的指南:
nohup command &
command
:要運行的命令或腳本。&
:將命令放入后臺運行。默認情況下,nohup
會將輸出重定向到當前目錄下的 nohup.out
文件。為了避免覆蓋已有文件,可以使用 >
或 >>
進行重定向:
nohup command > output.log 2>&1 &
>
:覆蓋寫入 output.log
。2>&1
:將標準錯誤(stderr)重定向到標準輸出(stdout),然后一起寫入 output.log
。為了確保命令在正確的環境中運行,建議使用命令的絕對路徑:
nohup /usr/bin/command > output.log 2>&1 &
如果命令依賴于特定的環境變量,可以在 nohup
命令前設置這些變量:
MY_VAR=value nohup command > output.log 2>&1 &
使用 ps
命令監控后臺進程:
ps aux | grep command
找到進程 ID(PID)后,可以使用 kill
命令終止進程:
kill -9 PID
screen
或 tmux
對于更復雜的任務管理,可以考慮使用 screen
或 tmux
。這些工具允許你在多個會話之間切換,并且即使終端關閉,進程也會繼續運行。
screen
screen -S mysession
command
# 按 Ctrl+A 然后按 D 退出 session
# 重新連接 session
screen -r mysession
tmux
tmux new -s mysession
command
# 按 Ctrl+B 然后按 D 退出 session
# 重新連接 session
tmux attach -t mysession
nohup.out
文件,確保沒有異常輸出。ulimit
命令限制進程的資源使用,防止資源耗盡。假設你想在后臺運行一個 Python 腳本,并將輸出重定向到一個文件:
nohup /usr/bin/python3 /path/to/script.py > script_output.log 2>&1 &
通過遵循這些指南,你可以更安全、有效地使用 nohup
命令來管理后臺進程。