JAVA-jar包執行及日誌輸出
阿新 • • 發佈:2021-09-28
一般情況下執行jar包,當前是可執行的jar包,直接命令
java -jar common.jar
按下ctrl+C ,關閉當前ssh或者直接關閉視窗,當前程式都會退出。
我們在命令的結尾新增 “&” ,&表示該程式可以在後臺執行
java -jar common.jar &
但是在當視窗關閉時,程式也會中止執行
nohup java -jarcommon.jar &
命令最前面個nohub關鍵字,這樣程式就會不掛斷執行命令, 當ssh終端關閉時,程式仍然在執行,當前程式的日誌會被寫入到當前目錄的nohup.out檔案中
我們可以改下輸入的日誌檔案
nohup java -jarcommon.jar> log.out &
當前程式的日誌會被寫入到當前目錄的log.out檔案中
如果不想寫日誌,可以將日誌重定向到 /dev/null 中,/dev/null代表linux的空裝置檔案,所有往這個檔案裡面寫入的內容都會丟失
nohup java -jarcommon.jar>/dev/null &
標準輸出就會不再存在,沒有任何地方能夠找到輸出的內容
nohup java -jar common-api.jar >/dev/null 2>log.error &
只輸出錯誤資訊到日誌檔案,標準輸出不寫入日誌檔案,直接丟棄
nohup java -jar common-api.jar >/dev/null 2>&1 &
標準輸出(stdout)重定向到/dev/null中(丟棄標準輸出),然後標準錯誤輸出(stderror)由於重用了標準輸出的描述符,所以標準錯誤輸出也被定向到了/dev/null中,錯誤輸出同樣也被丟棄了
nohup java -jar common-api.jar >log.out 2>&1 &
標準輸出重定向到log.out中,然後錯誤輸出由於重用了標準輸出的描述符,所以錯誤輸出也被定向到了log.out中
但是不管那種情況,如果日誌輸出,日誌檔案都會增加很快,造成單個檔案很大。所以需要拆分檔案
1:定時作業,每天將日誌檔案複製一份,然後將當前的日誌檔案清空。
2:藉助cronolog來分隔日誌
nohup java -jar common-api.jar | /usr/local/cronolog/sbin/cronolog logs/console-%Y-%m-%d.out &
這樣每天會產生一個console開頭的日誌檔案。
原文轉載於 https://www.cnblogs.com/benwu/articles/5077361.html