nohup命令詳解

2021-10-21 02:15:23 字數 1299 閱讀 4715

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

nohup命令詳解

使用nohup讓程式永遠後台執行 usr local mysql bin mysqld safe user mysql 但是加入我們很多程式並不象mysqld一樣做成守護程序,可能我們的程式只是普通程式而已,一般這種程式使用 結尾,但是如果終端關閉,那麼程式也會被關閉。但是為了能夠後台執行,那麼我們...

nohup命令詳解

說明 本文 在應用unix linux時,我們一般想讓某個程式在後台執行,於是我們將常會用 在程式結尾來讓程式自動執行。比如我們要執行mysql在後台 usr local mysql bin mysqld safe user mysql 可是有很多程式並不想mysqld一樣,這樣我們就需要nohup...

nohup 命令詳解

nohup命令及其輸出檔案 nohup命令 如果你正在執行乙個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶 關閉終端之後繼續執行相應的程序。nohup就是不掛起的意思 n ohang up 一般都是在linux下nohup格式 nohup comm...