nohup
(no hang-up)命令在 Linux 中用于在用戶退出登錄后繼續運行指定的命令或程序。以下是 nohup
命令的一些常見用法:
運行單個命令
nohup command &
例如:
nohup sleep 3600 &
這將使 sleep 3600
命令在后臺運行,并且即使你退出登錄,它也會繼續運行。
運行腳本
nohup ./script.sh &
這將使 script.sh
腳本在后臺運行,并且即使你退出登錄,它也會繼續運行。
指定輸出文件
默認情況下,nohup
會將輸出重定向到 nohup.out
文件。你可以顯式指定輸出文件:
nohup command > output.log 2>&1 &
這將把標準輸出和標準錯誤都重定向到 output.log
文件。
使用 &
后臺運行
在命令末尾加上 &
可以使命令在后臺運行,這樣你就可以立即返回到命令行提示符。
nohup command &
使用 disown
命令
如果你已經啟動了一個命令,但后來想要將其從當前 shell 的作業表中移除,可以使用 disown
命令:
nohup command &
disown
使用 screen
或 tmux
對于需要更復雜會話管理的任務,可以使用 screen
或 tmux
工具。這些工具允許你在多個會話之間切換,并且即使終端關閉,會話也會繼續運行。
screen -S mysession
command
# 按 Ctrl+A 然后按 D 退出會話
使用 systemd
服務
對于需要在系統啟動時自動運行的任務,可以創建一個 systemd
服務單元文件。
[Unit]
Description=My Service
[Service]
ExecStart=/path/to/command
Restart=always
[Install]
WantedBy=multi-user.target
然后啟用并啟動服務:
sudo systemctl enable myservice.service
sudo systemctl start myservice.service
nohup
命令會忽略掛起信號(SIGHUP),因此即使你退出登錄,命令也會繼續運行。nohup
時,建議將輸出重定向到文件,以避免輸出到終端導致混亂。screen
、tmux
或 systemd
服務來管理。通過這些用法,你可以有效地在 Linux 中使用 nohup
命令來確保命令在用戶退出登錄后繼續運行。