Linux後台執行任務 nohup

2022-02-17 09:37:18 字數 1610 閱讀 3800

& 不中斷

&表示在後台執行命令,沒有辦法通過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+&

Linux中後台執行任務

執行時,可以在命令最後新增 使其後台執行,但是其輸出依然會顯示,而且其執行是和當前shell繫結的 如果指令碼已經執行,可以使用ctrl z暫停,然後使用 bg 讓其轉入後台,再 disown 解除關聯,例如 z 1 stopped make j2 tomcat n00 master bg 1 ma...

Linux 任務後台執行(總結)

使任務後台執行fg 將後台執行或者停止的任務放到前台執行。bg使後台停止的任務執行在後台 jobs 列出後台執行或停止或已完成的程序 ctrl z 將當前在shell上執行的任務放入後台停止,可以結合 bg 命令使任務後台執行 上面方法中執行的程序都屬於shell的子程序,所以一旦shell關閉,斷...

linux後台 執行 關閉 檢視等任務

涉及到命令 fg bg jobs nohup ctrl z ctrl c1.放在命令最後,功能是這條命令放到後台執行 jingsia localhost asss watch n 1 date 1 272892.jobs 檢視後台執行的任務正在執行 jingsia localhost asss jo...