paulwong

          linux nohup命令詳解

          nohup命令及其輸出文件

          nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續(xù)運行相應的進程。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里面,   www.2cto.com

          所以結果是標準錯誤和標準輸出都導入文件output里面了。

          至于為什么需要將標準錯誤重定向到標準輸出的原因,那就歸結為標準錯誤沒有緩沖區(qū),而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

          posted on 2020-09-02 11:52 paulwong 閱讀(390) 評論(0)  編輯  收藏 所屬分類: LINUXLINUX-SHELL

          主站蜘蛛池模板: 株洲县| 柳河县| 富顺县| 清原| 广元市| 怀远县| 阿尔山市| 汾阳市| 黄冈市| 安仁县| 衢州市| 三都| 噶尔县| 丰宁| 富蕴县| 安新县| 永定县| 平原县| 玉山县| 海阳市| 芜湖市| 东丰县| 扎兰屯市| 托克逊县| 客服| 田阳县| 焦作市| 临汾市| 荔浦县| 徐汇区| 曲靖市| 霍邱县| 江北区| 石狮市| 习水县| 左云县| 吉水县| 潍坊市| 温宿县| 综艺| 古交市|