Linux 離開終端保留服務運行指令 - nohup

如何在離開或關閉終端後,仍然保留服務或程式繼續運行?想讓程式或服務在關閉當前終端後仍然後台運行,這個時候可以使用 nohup 這個指令。使用這個指令執行程序後,可以保留服務進程在系統後台,讓你關閉終端後也可以在伺服器中繼續運行服務或程式。

nohup 指令介紹

nohupNo Hangups 的縮寫。因此這不是一個可以獨立運作的指令,它屬於 Linux 的輔助補充指令,作用為告訴 Linux 不要停止這個指令。意味著它將一直運行直到完成為止,即使輸入命令的用戶已經關閉終端或註銷。

用途:讓服務或程序不掛斷地運行命令

語法:nohup [Command] [Arg] [&]

描述:使用 nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷 ( SIGHUP ) 信號

使用方法

nohup 的使用方法非常簡單,只要在 nohup 後面加上需要執行的指令,然後加上一個後台執行的 & 字符,例如:

$ nohup sh hello_nohup.sh &

nohup 預設會將執行指令的所有輸出保存在當前目錄下的 nohup.out 檔案。
你可以使用 cat nohup.out 來瀏覽輸出。

或者你可以用下面的方法將所有輸出重新導向到其他檔案,例如:

$ nohup sh hello_nohup.sh > /path/to/custom.out &

這樣就可以將指令的輸出保存到你指定的路徑及檔案內。

查看或終止 nohup

由於 nohup 將指令放到系統後台背景執行,所以要查看或終止 nohup 和執行中的指令,需要將終止執行的 pid 記下,然後使用 kill 來殺掉進程。

查看 nohup 執行的指令

$ jobs -l

輸出的結果第二欄是 pid ,最後一欄是相關指令的具體信息。找到 nohup 及執行的命令,將需要終止的進程 pid 記下,然後使用 kill 終止 nohup 執行。例如 pid12345

$ kill -9 12345