首頁 > 軟體

java -jar設定新增啟動引數實現方法

2023-02-14 06:02:35

java -jar設定新增啟動引數方法

java -jar 引數前後位置說明

springboot專案啟動的時候可以直接使用java -jar xxx.jar這樣。下面說說引數的一些講究

-DpropName=propValue

-DpropName=propValue的形式攜帶,要放在-jar引數前面

eg:

java -Dxxx=test -DprocessType=1 -jar xxx.jar

取值:System.getProperty("propName")

引數直接跟在命令後面

eg:

java -jar xxx.jar processType=1 processType2=2

取值:引數就是jar包裡主啟動類中main方法的args引數,按順序來

springboot的方式,--key=value方式

eg:

java -jar xxx.jar --xxx=test

取值:spring的@value("${xxx}")

java -jar命令詳解

java -jar命令用於執行jar程式,常用的寫法有5種:

第1種

java -jar demo.jar

說明:用這種方法啟動後,不能繼續執行其它命令了,如果想要繼續執行其它命令,需要退出當前命令執行視窗,會打斷jar的執行,打斷一般用ctrl+c。

第2種

java -jar demo.jar &

第2種在第1種方式的基礎上在命令的結尾增加了&,&表達的意思是在後臺執行。

這種方式可以避免打斷後程式停止執行的問題,但是如果關閉當前視窗後程式會停止執行。

第3種

nohup java -jar demo.jar &

第3種在第2種方式的基礎上,在命令的最前面增加了nohup。

nohup是不結束通話執行命令,當賬戶退出或終端關閉時,程式仍然執行。

加了nohup後,即使關掉命令視窗,後臺程式demo.jar也會一直執行。

第4種

nohup java -jar demo.jar >1.txt &

第4種在第3種的基礎上,在後面增加了>1.txt,意思是將nohup java -jar demo.jar的執行內容重定向輸出到1.txt檔案中,即輸出內容不列印到當前視窗上,而是輸出到1.txt檔案中。

第3種沒有加>1.txt,它的輸出重定向到nohup.out檔案中,nohup.out也就是nohup命令的預設輸出檔案, 檔案位於$HOME/nohup.out 檔案中,比如用root執行,就會輸出到/root/nohup.out。

第5種

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

這裡說下jar後面這串符號的意義 >/dev/null 2>&1 &

  • > 代表重定向到哪裡,例如:echo "123" > /home/123.txt
  • /dev/null 代表空裝置檔案
  • 2> 表示stderr標準錯誤
  • & 表示等同於的意思,2>&1,表示2的輸出重定向等同於1
  • 1 表示stdout標準輸出,系統預設值是1,所以">/dev/null"等同於 "1>/dev/null"

最後一個&表示在後臺執行。

這裡再補充說下這幾個數位代表的含義:

  • 0 標準輸入(一般是鍵盤)
  • 1 標準輸出(一般是顯示屏,是使用者終端控制檯)
  • 2 標準錯誤(錯誤資訊輸出)

/dev/null :首先表示標準輸出重定向到空裝置檔案,也就是不輸出任何資訊到終端,說白了就是不顯示任何資訊。一般專案中定義中輸出執行紀錄檔到指定地址,這樣的話,就不需要再單獨輸出nohup.out檔案,這種情況可以考慮使用這種。

我們可以把它寫成一個指令碼,不用每次都寫一遍。新建start.sh,根據我上傳的demo.jar,輸出到1.txt中,具體指令碼如下:

nohup  java  -Xms515m -Xmx1024m -jar -Dfile.encoding=UTF-8 demo.jar --spring.profiles.active=prod >/dev/null 2>&1 &

可以看到,上面的命令中我使用了Xms、Xmx、Dfile.encoding、spring.profiles.active等引數,那麼java -jar可以新增什麼引數,各自又能實現什麼樣的效果呢,且看下文:

  • -Xms 指定jvm執行最小執行堆記憶體,預設為實體記憶體1/64,用法 :-Xmx512m 注意:Xmx和512m中間不用新增空格
  • -Xmx 指定jvm執行最大執行堆記憶體,認實體記憶體1/4,用法: -Xmx1024m 注意:Xmx和1024m中間不用新增空格
  • --server.port 指定jar執行的port埠,用法:--server.port=8085
  • --spring.profiles.active=pro 指定執行的組態檔、環境,用法:--spring.profiles.active=prod

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com