如何在離開或關閉終端後,仍然保留服務或程式繼續運行?想讓程式或服務在關閉當前終端後仍然後台運行,這個時候可以使用 nohup 這個指令。使用這個指令執行程序後,可以保留服務進程在系統後台,讓你關閉終端後也可以在伺服器中繼續運行服務或程式。
nohup
指令介紹
nohup 是 No 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 執行。例如 pid
是 12345
:
$ kill -9 12345