1. 程式人生 > 其它 >JAVA-jar包執行及日誌輸出

JAVA-jar包執行及日誌輸出

一般情況下執行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