java啟動命令日志輸出重定向


1、問題描述

java啟動項目命令:

nohup java -jar -server -Dserver.port=10001 -Xms1024M -Xmx1024M -Dspring.profiles.active=dev /usr/local/application/laowang/laowang.jar  >/dev/null 2>&1 &

執行起來是沒問題,關於日志輸出重定向,開始有點搞混了,記錄下。

2、解決方案

1、首先要明確的是,nohup這些是在linux下執行的shell命令,其中的重定向也是shell命令參數的一種,不是java專用命令;

2、 nohup --- & ,這個是shell命令,表明是在后台運行,掛起,關閉ssh窗口也不會被關閉;

3、我們經常使用nohup command &命令形式來啟動一些后台程序,比如一些java服務:

# nohup java -jar xxxx.jar &

為了不讓一些執行信息輸出到前台(控制台),我們還會加上剛才提到的>/dev/null 2>&1命令來丟棄所有的輸出:

# nohup java -jar xxxx.jar >/dev/null 2>&1 &

當執行shell命令時,會默認打開3個文件,每個文件有對應的文件描述符來方便我們使用:

類型 文件描述符 默認情況 對應文件句柄位置
標准輸入(standard input) 0 從鍵盤獲得輸入 /proc/self/fd/0
標准輸出(standard output) 1 輸出到屏幕(即控制台) /proc/self/fd/1
錯誤輸出(error output) 2 輸出到屏幕(即控制台) /proc/self/fd/2

(1)“>/dev/null"

這條命令的作用是將標准輸出1重定向到/dev/null中。 /dev/null代表linux的空設備文件,所有往這個文件里面寫入的內容都會丟失,俗稱“黑洞”。那么執行了>/dev/null之后,標准輸出就會不再存在,沒有任何地方能夠找到輸出的內容;

(2)"2>/dev/null"
意思就是把錯誤輸出到“黑洞”;

(3)“>/dev/null 2>&1"
默認情況是1,也就是等同於1>/dev/null 2>&1。意思就是把標准輸出重定向到“黑洞”,還把錯誤輸出2重定向到標准輸出1,也就是標准輸出和錯誤輸出都進了“黑洞”;

(4)"2>&1 >/dev/null"
意思就是把錯誤輸出2重定向到標准出書1,也就是屏幕,標准輸出進了“黑洞”,也就是標准輸出進了黑洞,錯誤輸出打印到屏幕;

(5) >log.log 是將信息輸出到log.log日志中

# nohup java -jar xxxx.jar  >/var/log.log 2>&1 &

2>&1 是將標准錯誤信息轉變成標准輸出,這樣就可以將錯誤信息輸出到log.log 日志里面來。


更多信息請關注公眾號:「軟件老王」,關注不迷路,軟件老王和他的IT朋友們,分享一些他們的技術見解和生活故事。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM