springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程
我們在項目中都會遇到項目打包,可以通過assembly對我們的項目進(jìn)行打包。
針對打包構(gòu)建jar包,本文不再敘述。具體可以參考maven插件assembly使用及springboot啟動腳本start.sh和停止腳本 stop.sh
這里面已經(jīng)有一個springboot 的啟動腳本了,本文之所以還要寫,是因為之前的腳本存在一個問題。關(guān)閉腳本的時候是通過kill -9 命令進(jìn)行的,但其實我們項目中可能很多時候不能強(qiáng)制關(guān)閉的,在關(guān)閉之前需要做一些事情。比如將內(nèi)存數(shù)據(jù)存到磁盤,dubbo清空zookeeper里面的固定節(jié)點(diǎn) 等等。
這里將啟動腳本環(huán)境變量抽出來作為一個文件來使用:
setenv.sh
#!/usr/bin/env bash PIDFILE=server.pid if [ "$JAVA_HOME" != "" ]; then JAVA="$JAVA_HOME/bin/java" else JAVA=java fi JAVA_OPTS="-server -Xms32m -Xmx32m -Xmn24m -Xss256K -XX:MetaspaceSize=10m -DHADOOP_USER_NAME=root -XX:SurvivorRatio=4 -XX:+UseConcMarkSweepGC \ -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=10 \ -XX:CMSInitiatingOccupancyFraction=60 -XX:+AggressiveOpts \ -XX:+UseFastAccessorMethods \ -XX:+HeapDumpOnOutOfMemoryError \ -XX:HeapDumpPath=$base_dir/dump.dump -XX:+PrintGCDateStamps -XX:+PrintGCDetails \ -Xloggc:$base_dir/gc.log"
start.sh 啟動腳本:
#!/usr/bin/env bash #source $(dirname $0)/../../env.sh SERVERJAR="database-project-0.0.1-SNAPSHOT.jar" base_dir=$(dirname $0) cd .. if [ -r "$base_dir/setenv.sh" ]; then . "$base_dir/setenv.sh" fi PID=$(ps -ef | grep "$SERVERJAR" | grep -v grep | awk '{ print $2}') if [ -z "$PID" ]; then echo "Application has already stopped." else echo "kill $PID" kill $PID && echo "Send stopping signal to server successful." #wait server stop LOOPS=0 while(true) do PID=$(ps -ef | grep "$SERVERJAR" | grep -v grep | awk '{print $2}') if [ -z "$PID" ]; then echo "Stop server successful! Cost $LOOPS seconds." break; fi #judge time out if [ "$LOOPS" -gt 180 ]; then echo "$Stop server cost time over 180 seconds. Now force stop it." kill -9 $PID && echo "Force stop successful." break; else echo "Cost $LOOPS seconds." fi let LOOPS=LOOPS+1 sleep 1 done fi echo `pwd` echo $SERVERJAR echo $JAVA echo $JAVA_OPTS echo $JAVA_DEBUG_OPT nohup $JAVA $JAVA_OPTS -jar $base_dir/../lib/$SERVERJAR > $base_dir/nohup.out 2>&1 < /dev/null & if [ $? -eq 0 ]; then echo -n $! > "$PIDFILE" if [ $? -eq 0 ]; then sleep 1 echo "STARTED" else echo "FAILED TO WRITE PID" exit 1 fi else echo "SERVER DID NOT START" exit 1 fi
stop.sh 腳本
#!/usr/bin/env bash #source $(dirname $0)/../../env.sh SERVERJAR="database-project-0.0.1-SNAPSHOT.jar" base_dir=$(dirname $0) cd .. if [ -r "$base_dir/setenv.sh" ]; then echo -e "come get data start" . "$base_dir/setenv.sh" echo -e "come get data end " fi PID=$(ps -ef | grep "$SERVERJAR" | grep -v grep | awk '{ print $2}') if [ -z "$PID" ]; then echo "Application has already stopped." else echo "kill $PID" kill $PID && echo "Send stopping signal to server successful." #wait server stop LOOPS=0 while(true) do PID=$(ps -ef | grep "$SERVERJAR" | grep -v grep | awk '{print $2}') if [ -z "$PID" ]; then echo "Stop server successful! Cost $LOOPS seconds." break; fi #judge time out if [ "$LOOPS" -gt 180 ]; then echo "$Stop server cost time over 180 seconds. Now force stop it." kill -9 $PID && echo "Force stop successful." break; else echo "Cost $LOOPS seconds." fi let LOOPS=LOOPS+1 sleep 1 done fi
總結(jié)
到此這篇關(guān)于springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程的文章就介紹到這了,更多相關(guān)springboot啟動腳本start.sh和停止腳本 stop.sh內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java?超詳細(xì)講解設(shè)計模式之原型模式講解
原型模式是用于創(chuàng)建重復(fù)的對象,同時又能保證性能。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,今天通過本文給大家介紹下Java?原型設(shè)計模式,感興趣的朋友一起看看吧2022-03-03springboot本地調(diào)試沒問題,打包運(yùn)行報錯原因及分析
這篇文章主要介紹了springboot本地調(diào)試沒問題,打包運(yùn)行報錯原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-05-05SpringCloud Config配置中心原理以及環(huán)境切換方式
這篇文章主要介紹了SpringCloud Config配置中心原理以及環(huán)境切換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03SpringBoot構(gòu)建RESTful API的實現(xiàn)示例
本文主要介紹了SpringBoot構(gòu)建RESTful API的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05