nohup
命令在CentOS系統中用于在后臺運行程序,即使終端關閉也不會終止進程。本文將詳細介紹nohup
命令的基本用法、高級用法、注意事項及常見應用場景。
nohup command [arguments] > output.log 2>&1 &
command
: 要在后臺運行的命令。arguments
: 傳遞給命令的參數。> output.log
: 將標準輸出重定向到output.log
文件。2>&1
: 將標準錯誤輸出重定向到標準輸出。&
: 將命令放到后臺執行。運行一個長時間腳本:
nohup ./long_running_script.sh > script.log 2>&1 &
這條命令將在后臺運行long_running_script.sh
,并將輸出和錯誤信息重定向到script.log
文件。
在后臺啟動HTTP服務器:
nohup python3 -m http.server 8000 > server.log 2>&1 &
該命令會在后臺啟動一個HTTP服務器,監聽8000端口,并將所有日志記錄到server.log
文件中。
可以將輸出重定向到自定義文件,并指定標準錯誤輸出合并到標準輸出:
nohup ./my_script.sh > my_output.log 2>&1 &
nohup
可以與其他命令結合使用,例如過濾輸出:
nohup ./my_script.sh | grep 'error' > error.log &
這條命令會將包含“error”的輸出重定向到error.log
文件。
nohup
命令時,系統會發送郵件通知用戶輸出文件的路徑。如果未配置郵件接收程序,可能會收到大量郵件。ps
和kill
命令管理后臺進程。例如,查找進程ID并終止進程:ps aux | grep my_script.sh
kill <PID>
使用nohup
來確保服務在用戶退出時不會被終止,例如:
nohup java -jar myapp.jar > app.log 2>&1 &
結合crontab
使用nohup
,以在系統啟動時自動運行某些任務:
0 2 * * * nohup /path/to/daily-job.sh > /path/to/daily-job.log 2>&1 &
這條cron任務會在每天凌晨2點執行daily-job.sh
腳本,并將日志重定向到daily-job.log
文件中。
nohup
命令是Linux系統中的一個強大工具,能夠在終端關閉或用戶退出后繼續運行進程。通過合理使用nohup
,可以確保長時間運行的任務不被中斷,提升系統管理的靈活性和可靠性。