springboot項目啟動 java -jar詳解


原文地址:https://blog.csdn.net/qq_28165595/article/details/90740834

前言
在日常開發中,我們啟動springboot項目直接運行項目中的啟動類就可以了。但是如果需要將jar包在linux服務器上部署,沒有啟動類又該怎么啟動呢?肯定很多小伙伴會說,那不是很簡單么,java -jar不就行了么?這里詳細介紹下java -jar中一些常用命令參數配置。

微服務啟動中配置環境選擇
在微服務開發中,如果我們沒有使用springcloud config來統一管理各個服務的配置,那么配置文件就由服務本身來進行維護。一個服務需要在開發,測試,生產環境部署。如果只有一個配置文件,在不同環境部署的時候去修改這個配置文件。這種方法可行,但是效率很低而且還很容易出錯。所以我們一般會采用多個配置文件。在springboot中, 多環境配置的文件名需要滿足 application-{profile}.properties的格式, 其中{profile}對應你的環境標識, 如下所示

application-dev.properties 開發環境
application-test.properties 測試環境
application-prod.properties 生產環境
至於具體哪個配置文件會被加載,需要在 application.properties文件中通過spring.profiles.active 屬性來設置,其值對應配置文件中的{profile}值。 如spring.profiles.active = test 就會加載 application-test.properties配置文件內容。所以在java -jar的時候,可以指定配置文件來選擇不同的環境配置。如下所示

nohup java -jar myapp.jar --spring.profiles.active=test &
這里需要注意的一點,有時候我們在開發測試的時候, 會在jar包的包內包外都配置application-*.properties文件,這時候啟動默認是先采用包外的配置。

端口,堆內存配置
nohup java -Xms500m -Xmx500m -Xmn256m -Xss256k -server -XX:+HeapDumpOnOutOfMemoryError
-jar myapp.jar --server.port=8080 -verbose:class &
在上面的啟動命令中

-Xms500m -Xmx500m -Xmn256m -Xss256m 用來設置堆內存
-server:服務器模式,在多個CPU時性能佳,啟動慢但性能好,能合理管理內存
在排查jar包沖突時,可以指定啟動的-verbose:class  打印出啟動的應用實際加載類的路徑,來排查來源。
-XX:+HeapDumpOnOutOfMemoryError:在堆溢出時保存快照
--server.port=8080 指定端口
指定輸出位置
nohup java -jar -Dlogging.file=/usr/logs/myjar.log myjar.jar &
指定服務啟動日志輸出的文件。

有的時候日志比較多,導致保存日志的文件比較大,而這些日志沒有必要保留。

nohup java -jar myjar.jar >/dev/null 2>&1 &
>/dev/null 2>&1。這條命令其實分為兩命令,一個是>/dev/null,另一個是2>&1。

1. >/dev/null

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

2. 2>&1

這條命令用到了重定向綁定,采用&可以將兩個輸出綁定在一起。這條命令的作用是錯誤輸出將和標准輸出同用一個文件描述符,其實就是說將錯誤輸出和標准輸出都輸出都同一個文件。linux在執行shell命令之前,就會確定好所有的輸入輸出位置,並且從左到右依次執行重定向的命令,所以>/dev/null 2>&1的作用就是讓標准輸出重定向到/dev/null中(丟棄標准輸出),然后錯誤輸出由於重用了標准輸出的描述符,所以錯誤輸出也被定向到了/dev/null中,錯誤輸出同樣也被丟棄了。

總結
上面簡單介紹了java -jar啟動中經常會用到的一些參數配置。都是些基礎知識,簡單記錄下。


免責聲明!

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



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