如果我的工作需可能要2到3天才能做完,可以在離線或登出系統後,還能夠讓工作繼續進行,那該如何處理呢?
使用 nohup 這個指令來處理,這個 nohup 可以讓你在離線或登出系統後,還能夠讓工作繼續進行。

有關 nohup
nohup 的全寫是 “"no hangup", HUP hangup (HUP) 訊號會在使用者登出時, 系統向 process 發出, 通知 process 結束, 但透過 nohup 執行的指令, nohup 會將 HUP 訊息截取, 讓指令可以繼續執行。
 
語法:

所有執行產生的輸出,將自動導出到nohup.txt
將輸出重新導出到新的檔案,例如myout.txt

查看及終止 nohup
由於 nohup 將指令放到背景執行, 要查看或終止 nohup 便要先取得 nohup 執行指令的 pid, 再用 kill 掉:
查看 nohup 執行的指令:

輸出的結果第二欄是 pid, 最後一欄是 nohup 及執行的指令, 將要終止執行的 pid 記下, 再用 kill 指令終止 nohup 執行, 例如 pid 是 123456

察看nohup執行結果
一旦透過nohup執行命令,所有的輸出都會存到檔案,而不是直接顯示在螢幕上。如果你想要看執行結果的話,你可以用 tail 命令加上 -f 參數,讓shell自動為你在檔案有所更新時一併印出,也就是說看起來就好像你在看螢幕上的執行結果一樣:

需要注意的是, nohup 並不支援 bash 內建的指令,因此你的指令必須要是外部指令才行。
11240

Tags: , , ,