Linux後臺執行任務 nohup &
阿新 • • 發佈:2020-07-02
Linux後臺執行任務 nohup &
& 不中斷
&
表示在後臺執行命令,沒有辦法通過Ctrl+C
結束命令,但是可以通過關閉終端來殺掉程序。
nohup 不掛起
nohup
命令:如果你正在執行一個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup
命令。該命令可以在你退出帳戶/關閉終端之後繼續執行相應的程序。nohup
就是不掛起的意思( no hang up)
在我們關閉session時會發出SIGHUP訊號,終端裡執行的程式會結束,如果想要忽略SIGHUP訊號,就需要在命令前增加nohup命令,此時關閉session後命令會繼續執行。
此時會忽略輸入,並將輸出重定向到nohup.out
這樣就將輸出重定向到myout.file,redirecting stderr to stdout的意思是告訴你標準錯誤也會重定向到標準輸出。當然,你也可以自己將標準錯誤重定向到輸出,這樣就不會有警告。
對於2 ,表示標準錯誤,stderr。
對於&1 更準確的說應該是檔案描述符 1,而1標識標準輸出,stdout。
結合nohup和&
很多時候單獨的nohup
並不能滿足我們的需求,你會發現在執行上面的命令只能等待任務執行完,在此之前任何輸入都沒有用除非新開個終端,所以nohup
經常和&
一起用。
此時程式在後臺執行,你可以繼續執行其他操作,而且關閉終端也不會影響任務的執行。
我們可以通過jobs -l
來顯示任務列表及狀態,其中-l
是顯示程序號。但是jobs命令只對當前終端生效,當我們重新開啟終端後jobs就不能顯示任務狀態了,此時只能用ps
命令檢視當前程序。
其中29979就是程序ID,15965是父程序ID,如果要結束某個程序,可以使用kill
命令
kill -9 ID
總結
&
會在後臺執行,忽略Ctrl+C的SIGINT訊號
nohup
會忽略關閉session的SIGHUP訊號
一般同時使用nohup+&