欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程

 更新時間:2020年08月24日 09:40:48   作者:筏鏡  
這篇文章主要介紹了springboot啟動腳本start.sh和停止腳本 stop.sh的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(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)文章

  • SpringBoot整合LocalDateTime的過程

    SpringBoot整合LocalDateTime的過程

    LocalDateTime 和 Date 是 Java 中處理日期和時間的兩種不同的類,在 JDK8 中引入了 java.time 包,這篇文章主要介紹了SpringBoot整合LocalDateTime的過程,需要的朋友可以參考下
    2024-08-08
  • Java?超詳細(xì)講解設(shè)計模式之原型模式講解

    Java?超詳細(xì)講解設(shè)計模式之原型模式講解

    原型模式是用于創(chuàng)建重復(fù)的對象,同時又能保證性能。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式,今天通過本文給大家介紹下Java?原型設(shè)計模式,感興趣的朋友一起看看吧
    2022-03-03
  • 詳解Java多線程tryLock()方法使用

    詳解Java多線程tryLock()方法使用

    本文主要介紹了Java多線程tryLock()方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • springboot本地調(diào)試沒問題,打包運(yùn)行報錯原因及分析

    springboot本地調(diào)試沒問題,打包運(yùn)行報錯原因及分析

    這篇文章主要介紹了springboot本地調(diào)試沒問題,打包運(yùn)行報錯原因及分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 關(guān)于SpringBoot的熱部署方案

    關(guān)于SpringBoot的熱部署方案

    這篇文章主要介紹了關(guān)于SpringBoot的熱部署方案,每次修改代碼就得將項目重啟,重新部署,對于一些大型應(yīng)用來說,重啟時間需要花費(fèi)大量的時間成本,本文就來詳解熱部署方案,需要的朋友可以參考下
    2023-05-05
  • SpringCloud Config配置中心原理以及環(huán)境切換方式

    SpringCloud Config配置中心原理以及環(huán)境切換方式

    這篇文章主要介紹了SpringCloud Config配置中心原理以及環(huán)境切換方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 詳解SpringMVC中使用Interceptor攔截器

    詳解SpringMVC中使用Interceptor攔截器

    SpringMVC 中的Interceptor 攔截器也是相當(dāng)重要和相當(dāng)有用的,它的主要作用是攔截用戶的請求并進(jìn)行相應(yīng)的處理,這篇文章主要介紹了詳解SpringMVC中使用Interceptor攔截器,有興趣的可以了解一下。
    2016-12-12
  • Java實現(xiàn)ArrayList排序的方法詳解

    Java實現(xiàn)ArrayList排序的方法詳解

    Java中常見的ArrayList排序方法主要為三種:JDK8的stream、Comparator#compare()和Comparable#compareTo(),本文將詳解這三者的使用,需要的可以參考一下
    2022-05-05
  • SpringBoot構(gòu)建RESTful API的實現(xiàn)示例

    SpringBoot構(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
  • Spring Boot maven框架搭建教程圖解

    Spring Boot maven框架搭建教程圖解

    這篇文章主要介紹了Spring Boot maven框架搭建教程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07

最新評論