1. 程式人生 > >讓程式在linux後臺執行的方法

讓程式在linux後臺執行的方法

常見用法:

nohup ./Thriftc & > /dev/null &

 在linux後臺執行Thriftc程式,並將其輸出重定向到空裝置:/dev/null,也就是將程式輸出全部丟棄。

nohup COMMAND > out.log 2>&1 &

 在linux後臺執行COMMAND命令,將標準輸出重定向到out.log檔案,標準錯誤也重定向到out.log檔案(標準錯誤重定向到標準輸出,再將標準輸出重定向到out.log)。

 

上邊的示例涉及到兩個命令:nohup和&,下面依次進行解釋。

nohup

 nohup,"no hangup" 的縮寫,意思是“不掛斷”,也就是不掛斷地執行命令。

 命令格式:

nohup COMMAND [ARG]... 

 執行指定的命令,忽略所有掛起(SIGHUP)訊號。使用nohup執行命令可以使命令永久的執行下去,在使用者登出/關閉終端之後仍然繼續執行。值得注意的是,命令或程序並沒有在後臺執行。

 如果沒有將 nohup 命令的輸出進行重定向,輸出將追加到當前目錄的 nohup.out 檔案中。如果當前目錄的 nohup.out 檔案不可寫,輸出重定向到 $HOME/nohup.out 檔案中。

&

 & 是指在後臺執行。將&新增到命令的尾部,命令就會在後臺執行,但當用戶退出(掛起)的時候,命令自動也跟著退出。

 

後臺持續執行

 要讓程式在後臺持續執行,要將nohup和&結合起來使用。

例如:

sh test.sh &   

 將 test.sh 任務放到後臺,關閉xshell,對應的任務也跟著停止。

nohup sh test.sh   

 將 test.sh 任務放到後臺,關閉標準輸入,終端不再能夠接收任何輸入(標準輸入),重定向標準輸出和標準錯誤到當前目錄下的nohup.out檔案,即使關閉xshell,當前session依然繼續執行。

nohup sh test.sh  &  

 將 test.sh 任務放到後臺,但是依然可以使用標準輸入,終端能夠接收任何輸入,重定向標準輸出和標準錯誤到當前目錄下的nohup.out檔案,即使關閉xshell,當前session依然繼續執行。

 

參考:

  https://blog.csdn.net/u011095110/article/details/78666833