nohup 命令和 & 符號在 Linux 和 Unix 系統中都用于在后臺運行程序,但它們的用途和工作方式有所不同。
nohup 是 “no hang up” 的縮寫,意味著即使終端關閉,程序也會繼續運行。nohup 運行的程序會忽略掛起(SIGHUP)信號,這是通常在終端關閉時發送給進程的信號,用于通知進程終止。nohup 通常與輸出重定向一起使用,以便將程序的輸出保存到文件中,而不是顯示在終端上。例如:nohup myprogram > output.log 2>&1 &。nohup 運行的程序會在當前目錄下創建一個名為 nohup.out 的文件,用于存儲程序的輸出,除非指定了其他輸出文件。& 符號用于將命令放入后臺運行,這意味著你可以在不等待命令完成的情況下繼續在終端中執行其他命令。& 符號時,該命令會在后臺啟動,并且終端會立即返回提示符,允許你執行其他命令。& 符號運行的程序仍然會受到掛起信號的影響,如果終端關閉,程序可能會被終止。& 符號本身不提供任何保護機制來防止程序在終端關閉時終止。總結:
nohup 命令,并且通常還需要將輸出重定向到文件。& 符號。在實際使用中,這兩個工具經常結合使用,例如:nohup myprogram > output.log 2>&1 &,這樣程序會在后臺運行,忽略掛起信號,并將標準輸出和標準錯誤輸出都重定向到 output.log 文件中。