nohup
和 &
都是在 Linux/Unix 系統中用于在后臺運行命令的方法,但它們之間有一些區別:
nohup(no hang up):
nohup
命令運行一個程序時,它會忽略所有的掛起(SIGHUP)信號。這意味著即使你關閉終端或斷開與服務器的連接,程序也會繼續運行。nohup
會將程序的輸出重定向到一個名為 nohup.out
的文件中,除非你指定了其他輸出文件。這樣可以防止輸出丟失。nohup
運行的程序會在當前目錄下創建一個 nohup.out
文件,其中包含程序的標準輸出和標準錯誤輸出。&(ampersand):
&
符號時,它會將命令放入后臺運行,讓你可以立即返回到命令提示符并繼續執行其他任務。&
運行的程序仍然會受到掛起(SIGHUP)信號的影響。如果你關閉終端或斷開與服務器的連接,程序可能會被終止。&
運行的程序不會自動將輸出重定向到任何文件。你需要手動指定輸出文件,例如:command > output.txt 2>&1 &
。總結一下,nohup
更適用于需要在后臺長時間運行的程序,特別是當你需要確保程序在關閉終端或斷開連接后仍然繼續運行時。而 &
更適用于臨時在后臺運行程序,當你不需要關心程序在斷開連接后的狀態時。