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