Java部署jar包並后台運行


Java部署jar包並后台運行

Linux環境部署:

1、執行jar包的命令和在windows操作系統上是一樣

java -jar jarName-0.0.1-SNAPSHOT.jar;
注: 關閉服務器連接時會關閉此程序進程,(推薦測試可用)

2、將jar程序設置成后台運行,並且將標准輸出的日志重定向至文件msg.log

nohup java -jar jarName-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &;
注:  nohup命令的作用就是讓程序在后台運行,不用擔心關閉連接進程斷掉的問題了(推薦使用)

詳解:
nohup
nohup命令運行由Command參數和任何相關的Arg參數指定的命令,忽略所有掛斷(SIGHUP)信號。
在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup命令,添加 &(表示“and”的符號)到命令的尾部。
nohup是no hang up的縮寫,就是不掛斷的意思。
nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。
該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。
在缺省情況下該作業的所有輸出都被重定向到一個名為nohup.out的文件中。

nohup和&的區別
&:指在后台運行,但當用戶推出(掛起)的時候,命令自動也跟着退出
nohup:不掛斷的運行,注意並沒有后台運行的功能,,就是指,用nohup運行命令可以使命令永久的執行下去,和用戶終端沒有關系,
例如我們斷開SSH連接都不會影響他的運行,注意了nohup沒有后台運行的意思;&才是后台運行。

nohup java -jar jarName-0.0.1-SNAPSHOT.jar >msg.log 2>&1 &;

在上面的例子中,0:stdin (standard input),1:stdout (standard output),2:stderr (standard error);

2>&1是將標准錯誤(2)重定向到標准輸出(&1),標准輸出(&1)再被重定向輸入到msg.log文件中

3、重新部署

ps -ef|grep java;

找到此進程:
root 9836 0.1 4.6 10903144 1522292 ? Sl Nov08 1:31 java -jar jarName-0.0.1-SNAPSHOT.jar
執行: kill -9 9836 殺死進程;
注: 9836 為進程標識號
(Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:#killall -9 name)
然后再重新執行一下nohup命令即可。

Windows環境部署:

 新建一個bat文件,輸入:  

@echo off
start javaw -jar xxx.jar --server.port=端口號
exit

 執行這個批處理程序就可以在后台運行jar包了

 

注意:
1、Win10有個UAC虛擬化,如果啟動不成功,請在任務管理器(詳細信息)找到該進程,右鍵UAC虛擬化,改成已啟動
UAC設置請自行百度,大體如下
按“win+R”打開“運行”窗口,鍵入“gpedit.msc”命令,打開組策略編輯器;
在左打開的組策略編輯器中,依次展開“本地計算機——windows設置——安全設置——本地策略——安全選項”
在此將該分支下的“將文件及注冊表寫入失敗虛擬化到每用戶位置”設置為啟用即可(如果是啟動,請先設置禁用后在設置啟動,重啟電腦即可生效)
2、--server.port=端口號,如不設置的話,為項目開發默認的端口


免責聲明!

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



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