linux nohup命令詳解

nohup command   賬戶退出繼續運行
nohup command &   終端關閉繼續運行

nohup命令及其輸出文件 
     nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的進程。nohup就是不掛起的意思( n ohang up)。 
一般都是在linux下nohup格式:   
nohup command 
或者 
nohup command & 
這之間的差別是帶&的命令行,即使terminal(終端)關閉,或者電腦死機程序依然運行(前提是你把程序遞交到服務器上); 
它把標準輸出(STDOUT)和標準錯誤(STDERR)結果輸出到nohup.txt文件這個看似很方便,但是當輸出很大的時候,nohup.txt文件會非常大,或者多個後臺命令的時候大家都會輸出到nohup.txt文件,不利於查找結果和調試程序。 
所以能夠重定向輸出會非常方便。下面要介紹標準輸出,標準輸入 和標準錯誤了。 
其實我們一直都在用,只是沒有注意到,  
比如 
>./command.sh > output 
#這其中的>就是標準輸出符號,其實是 1>output 的縮寫 
>./command.sh 2> output 
#這裏的2>就是將標準錯誤輸出到output文件裏。 
而0< 則是標準輸入了。 
下面步入正題,重定向後臺命令 
>nohup ./command.sh > output 2>&1 & 
解釋:前面的nohup 和後面的&我想大家都能明白了把。 
 
主要是中間的 2>&1的意思 
這個意思是把標準錯誤(2)重定向到標準輸出中(1),而標準輸出又導入文件output裏面,  
所以結果是標準錯誤和標準輸出都導入文件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

http://www.2cto.com/os/201301/185701.html
發佈了16 篇原創文章 · 獲贊 9 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章