nohup命令和&符號在Linux中經常一起使用,以實現讓程序在后臺運行并忽略掛起(SIGHUP)信號的目的。下面是關于這兩個命令配合使用的詳細解釋和技巧:
nohup是“no hang-up”的縮寫,意味著即使終端關閉,程序也會繼續運行。它通常用于確保長時間運行的任務不會因為終端斷開而中斷。
&符號用于將命令放入后臺執行。當你在命令行中輸入一個命令并按下&,該命令會在后臺啟動,而不會阻塞當前終端。
nohup your_command &
這會讓your_command在后臺運行,并且即使你關閉終端,它也會繼續執行。輸出會被重定向到nohup.out文件中(除非你指定了其他輸出文件)。
如果你不想讓輸出默認寫入nohup.out,可以使用重定向操作符>或>>來指定輸出文件:
nohup your_command > output.log 2>&1 &
這里,>將標準輸出重定向到output.log,2>&1將標準錯誤重定向到標準輸出(即output.log),最后的&將整個命令放入后臺。
你可以使用jobs命令來查看當前終端的后臺進程。如果你想查看所有用戶的后臺進程,可以使用ps命令結合grep:
ps aux | grep your_command
要終止一個后臺進程,你可以先使用jobs -l找到進程的PID(進程ID),然后使用kill命令來終止它:
kill PID
或者,如果你知道進程的名字,也可以使用pkill命令:
pkill -f your_command
nohup時,確保你了解該命令的行為和可能的副作用,因為它會讓程序在后臺持續運行,即使你忘記了它。screen或tmux,它們提供了更多的功能和靈活性。