在Linux中,nohup(no hang-up)命令用于在用戶退出登錄后繼續運行指定的程序或腳本。這對于確保長時間運行的任務不會因為終端關閉或網絡斷開而中斷非常有用。以下是如何使用nohup命令的詳細步驟和示例:
nohup command [arguments] &
command:要運行的命令或腳本。[arguments]:傳遞給命令的參數。&:將命令放入后臺運行。假設你有一個名為my_script.sh的腳本,你想在后臺運行它,并且即使你關閉終端,它也會繼續運行。
編寫腳本:
#!/bin/bash
echo "Hello, World!"
sleep 3600 # 讓腳本運行1小時
賦予執行權限:
chmod +x my_script.sh
使用nohup運行腳本:
nohup ./my_script.sh &
默認情況下,nohup會將輸出重定向到當前目錄下的nohup.out文件。如果你想指定其他輸出文件,可以使用重定向操作符。
nohup ./my_script.sh > output.log 2>&1 &
>:將標準輸出重定向到output.log。2>&1:將標準錯誤輸出重定向到標準輸出,即output.log。你可以使用ps命令來查看由nohup啟動的進程。
ps aux | grep my_script.sh
如果你需要終止由nohup啟動的進程,可以使用kill命令。
查找進程ID:
ps aux | grep my_script.sh
終止進程:
kill -9 <PID>
其中<PID>是進程ID。
nohup命令會忽略掛起信號(SIGHUP),因此即使終端關閉,進程也會繼續運行。nohup時,建議將輸出重定向到一個文件,以避免輸出到終端并占用大量空間。systemd服務單元文件來實現。通過以上步驟,你可以有效地使用nohup命令在Linux中避免進程中斷。