Linux下啟動SpringBoot打包的jar


前言

這兩天把視力檔案后台部署的方式改了一下,由原來打包成war包,部署到一個tomcat里面,轉變成直接打包成jar包,然后使用 java -jar命令進行啟動

下面講講遇到的問題

1)java -jar 運行時是前台啟動,並非后台運行

這個解決的方法是,使用nohub命令

nohup 是 no hang up 的縮寫,就是不掛斷的意思

nohup命令:如果你正在運行一個進程,而且你覺得在退出帳戶時該進程還不會結束,那么可以使用nohup命令。該命令可以在你退出帳戶/關閉終端之后繼續運行相應的進程。

nohup 命令

用途:不掛斷地運行命令。

語法:nohup Command [ Arg … ][ & ] 描述:nohup 命令運行由 Command 參數和任何相關的 Arg 參數指定的命令,忽略所有掛斷(SIGHUP)信號。在注銷后使用 nohup 命令運行后台中的程序。要運行后台中的 nohup 命令,添加 &到命令的尾部

然后我們需要設置對應的日志輸出目錄

# 設置輸出目錄 nohup java -jar xxx.jar > catalina.out 2>&1 & # 使用tail命令打印日志 tail -f ./catalina.out

2)因為使用java -jar的時候,不指定java內存大小的話,會導致啟動非常緩慢,所以需要設置堆棧大小

java -jar -XX:MetaspaceSize=1024m -XX:MaxMetaspaceSize=1024m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC

-XX:MetaspaceSize:最小元空間 -XX:MaxMetaspaceSize:最大元空間 -Xms:最小堆內存 -Xmx:最大堆內存 -Xmn:新生代大小 -Xss:棧大小 -XX:SurvivorRatio:新生代中Eden區與兩個Survivor區的比值。注意Survivor區有兩個。如:為3,表示Eden:Survivor=3:2,一個Survivor區占整個新生代的1/5 -XX:+UseConcMarkSweepGC:設置並發收集器

對於上面的,我只設置了最小堆內存和最大堆內存

nohup java -Xms256m -Xmx512m -jar mogu_sms-0.0.1-SNAPSHOT.jar > catalina.out 2>&1 &

 

3)設置兩個啟動腳本,以后方便直接啟動和關閉

首先是啟動腳本  startup.sh

#!/bin/bash     
nohup java -Xms256m -Xmx512m -jar youApplication.jar  > catalina.out  2>&1 &
tail -f ./catalina.out

 

然后是關閉腳本 shutdown.sh

#!/bin/bash
PID=$(ps -ef | grep youApplication.jar  | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo Application is already stopped
else
    echo kill $PID
    kill $PID
fi

 

 


免責聲明!

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



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