首頁 > 軟體

Linux部署微服務之:nohup

2021-05-18 14:30:07

§ nohup

nohup是nohangup 不掛起的意思,如果你正在運行一個程序,而且你覺得在退出帳戶時該程序還不會結束,那麼可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之後繼續運行相應的程序。該命令運行後是前臺程序

nobupjava-jarxxx.jar

§ &

&指讓程式後臺運行

ava-jarxxx.jar&

§ 兩者特點

使用nohup運行程式:

結果預設會輸出到nohup.out

使用Ctrl+C傳送SIGINT訊號,程式關閉

關閉session傳送SIGHUP訊號,程式免疫

使用**&**後臺運行程式:

結果會輸出到終端

使用Ctrl+C傳送SIGINT訊號,程式免疫

關閉session傳送SIGHUP訊號,程式關閉

§ 使用兩者結合讓程式後臺運行

結合上面兩個命令可以讓程式後臺運行,關閉視窗或者 ctrl+c 都不會中斷程序

nohupjava-jarxxx.jar& ,

§ 日誌檔案的處理

類型檔案描述符含義

標準輸入(standardinput)0從鍵盤輸入

標準輸出(standardoutput)1輸出到螢幕(控制檯)

錯誤輸出(erroroutput)2輸出到螢幕(控制檯)

使用nohupjava-jarxxx.jar 命令會預設生成一個 nohup.out 檔案來記錄日誌,標準輸出和錯誤輸出都會在該檔案中。

如果我們要將日誌輸出到指定的其他檔案時可以使用輸出符號 >指定你的檔案。例如將檔案輸出到log.txt 中可以使用命令:nohupjava-jarxxx.jar1>log.txt 字元1可以省略,這樣標準輸出日誌會輸出到 log.txt檔案中,但是錯誤的日誌怎麼處理呢?我需要使用到命令的重定向繫結。修改命令為:nohupjava-jarxxx.jar>log.txt2>&1& 將錯誤輸出重定向到標準輸出1中,這樣標準輸出和錯誤輸出都會在log.txt檔案中。

§ 如果不需要日誌該如何設定

有的時候程式中已經指定了日誌的位置,那麼就不需要nohup.out檔案了,這時候要丟棄這個檔案。

/dev/null代表linux的空裝置檔案,所有往這個檔案裡面寫入的內容都會丟失,俗稱黑洞,

我們可以把日誌輸出指向這裡: nohupjava-jarxxx.jar>/dev/null2>&1

§ 總結

後臺啟動並且不需要nohup.out檔案的命令:

nohupjava-jarxxx.jar>/dev/null2>&1&


IT145.com E-mail:sddin#qq.com