歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

linux nohup命令詳解

linux nohup命令詳解   nohup命令及其輸出文件       nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。  一般都是在linux下nohup格式:   www.2cto.com   nohup command  或者  nohup command &  這之間的差別是帶&的命令行,即使terminal(終端)關閉,或者電腦死機程序依然運行(前提是你把程序遞交到服務器上);  它把標准輸出(STDOUT)和標准錯誤(STDERR)結果輸出到nohup.txt文件這個看似很方便,但是當輸出很大的時候,nohup.txt文件會非常大,或者多個後台命令的時候大家都會輸出到nohup.txt文件,不利於查找結果和調試程序。  所以能夠重定向輸出會非常方便。下面要介紹標准輸出,標准輸入 和標准錯誤了。  其實我們一直都在用,只是沒有注意到,   www.2cto.com   比如  >./command.sh > output  #這其中的>就是標准輸出符號,其實是 1>output 的縮寫  >./command.sh 2> output  #這裡的2>就是將標准錯誤輸出到output文件裡。  而0< 則是標准輸入了。  下面步入正題,重定向後台命令  >nohup ./command.sh > output 2>&1 &  解釋:前面的nohup 和後面的&我想大家都能明白了把。 
  主要是中間的 2>&1的意思  這個意思是把標准錯誤(2)重定向到標准輸出中(1),而標准輸出又導入文件output裡面,   www.2cto.com   所以結果是標准錯誤和標准輸出都導入文件output裡面了。  至於為什麼需要將標准錯誤重定向到標准輸出的原因,那就歸結為標准錯誤沒有緩沖區,而stdout有。  這就會導致 >output 2>output 文件output被兩次打開,而stdout和stderr將會競爭覆蓋,這肯定不是我門想要的. 
  這就是為什麼有人會寫成:  nohup ./command.sh >output 2>output出錯的原因了  ##########################  最後談一下/dev/null文件的作用  這是一個無底洞,任何東西都可以定向到這裡,但是卻無法打開。  所以一般很大的stdou和stderr當你不關心的時候可以利用stdout和stderr定向到這裡>./command.sh >/dev/null 2>&1   
Copyright © Linux教程網 All Rights Reserved