linux 退出 java -jar 后台執行


這里的linux退出,指的是linux(退出管理工具),非注銷登陸。

java -jar xxx.jar 即刻啟動jar包,能看到輸出的日志。linux 退出后會關閉該執行。

java -jar xxx.jar & 即刻在后台啟動jar包,看不到到輸出的日志。linux 退出后會關閉該執行。

如何保證jar包執行后,退出linux,jar包不會隨之關閉,導致項目無法訪問

此處我們需要使用到nohup

nohup

用途:不掛斷的運行命令

語法:nohup Command [ Arg … ] [ & ]

&

用途:在后台運行

一般兩個一起用

nohup command &

egnohup java -jar xxx.jar >log.txt &。這種方式會在jar目錄下生成log.txt。這里我們先查看當前項目是否還在運行:ps -ef | grep xxx.jar,可以看到如下結果(例圖):

 

 

 

 grep 類型 的是默認的,我們主要處理的是java類型的,執行kill -9 11858 

再次執行ps -ef | grep xxx.jar就只能查到grep 類型的了。

后台啟動時 使用  nohup java -jar xxx.jar >/log/log.txt 2>&1 &

第一個>后面是你的入職輸出路徑

第二個> 后面的 2>&1 是將標准出錯重定向到標准輸出,這里的標准輸出已經重定向到了out.file文件,即將標准出錯也輸出到out.file文件中。

最后一個& , 是讓該命令在后台執行。

對 於& 1 更准確的說應該是文件描述符 1,

1 一般代表的就是STDOUT_FILENO,實際上這個操作就是一個dup2(2)調用.

他標准輸出到all_result ,然后復制標准輸出到文件描述符2(STDERR_FILENO),

其后果就是文件描述符1和2指向同一個文件表項,也可以說錯誤的輸出被合並了.

其中0 表示鍵盤輸入 1表示屏幕輸出 2表示錯誤輸出.把標准出錯重定向到標准輸出,

然后扔到/log 下面去。

/log/log.txt 2>&1 &

是將command的輸出重定向到/log/log.txt ,即輸出的內容不會打印到當前屏幕,而是輸出到了/log/log.txt 文件中。

標准輸入文件(stdin):stdin的文件描述符為0,Unix程序默認從stdin讀取數據。
標准輸出文件(stdout):stdout 的文件描述符為1,Unix程序默認向stdout輸出數據。
標准錯誤文件(stderr):stderr的文件描述符為2,Unix程序會向stderr流中寫入錯誤信息。
屏蔽輸出,起到禁止輸出作用:/dev/null 是一個特殊的文件,寫入到它的內容都會被丟棄;

如果嘗試從該文件讀取內容,那么什么也讀不到。但是 /dev/null 文件非常有用,將命令的輸出重定向到它,會起到"禁止輸出"的效果。
“> /log/log.txt 2>&1” :表示將 stdout 和 stderr 合並后重定向到 /log/log.txt

 

啟動指派給指定的端口:

nohup java -jar xxx.jar --server.port:80>/log/log.txt 2>&1 &

 


免責聲明!

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



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