讓程式在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