SpringBoot 启动部署脚本

介绍说明

springboot工程启动脚本,记录一下。

脚本实例

#!/bin/sh
#!/bin/bash
#
# Copyright (c) 2019 by lulongij.
# All rights reserved.
#
#ident  "@(#)lulj 2.0"

#项目jar名称
APP_NAME=test

#JDK指定
#JAVA_HOME=/app/java/jdk8

#关闭debug模式则设置为空
APP_DEBUGE=
#APP_DEBUGE="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=18099"

#JVM参数  -Xms程序启动时占用内存大小 -Xmx程序运行期间最大可占用的内存大小 -Xss设定每个线程的堆栈大小   -Xmn 年轻代大小
JVM_OPTS=
#JVM_OPTS='-Xms1024m -Xmx1024m  -Xss256k -XX:MaxPermSize=512m -XX:NewRatio=4 -XX:+UseParallelGC -XX:ParallelGCThreads=8 -XX:+UseAdaptiveSizePolicy -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails -XX:-HeapDumpOnOutOfMemoryError -Xloggc:verbose-gc-sp.txt'


# 如果不指定jdk则使用默认
if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
    javaexe="$JAVA_HOME/bin/java"
elif type -p java > /dev/null 2>&1; then
    javaexe=$(type -p java)
elif [[ -x "/usr/bin/java" ]];  then
    javaexe="/usr/bin/java"
else
    echo "Unable to find Java"
    exit 1
fi

#获取当前工作空间
SOURCE="$0"
while [ -h "$SOURCE"  ]; do
    DIR="$( cd -P "$( dirname "$SOURCE"  )" && pwd  )"
    SOURCE="$(readlink "$SOURCE")"
    [[ $SOURCE != /*  ]] && SOURCE="$DIR/$SOURCE"
done
WORKING_DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"

#项目目录
APP_HOME="$(dirname "$WORKING_DIR")"

#项目配置文件路径
APP_CONF="$APP_HOME/conf/application-prod.properties"

#日志文件
LOG_FILE="--logging.config=$APP_HOME/conf/logback-spring.xml"

JAR_FILE=$APP_HOME/lib/$APP_NAME*.jar

pid=00000
#校验进程
APP_PID=$APP_HOME/$APP_NAME.pid

APP_CONF="--spring.config.location=file:$APP_CONF "

start(){
 checkpid
 if [ $? -eq 0 ]; then
    echo JDK路径: $JAVA_HOME
    echo 项目目录: $APP_HOME
    echo 项目名称: $APP_NAME
    echo 配置文件: $APP_CONF
    echo JVM参数: $JAVA_OPTS

    if  [ ! -n "$APP_DEBUGE" ] ;then
        echo "关闭debug模式!"
    else
        echo "开启debug模式!"
    fi

    /bin/sh -c  "$javaexe -jar $APP_DEBUGE $JVM_OPTS $JAR_FILE $APP_CONF  $LOG_FILE > /dev/null 2>&1 & echo \$!" > "$APP_PID"
    echo "---------------------------------"
    echo "启动完成"
    echo "---------------------------------"
    sleep 2s
  else
      echo "$APP_NAME is runing PID: $pid"
  fi

}

status(){
   checkpid
   if [ $? -eq 0 ]; then
     echo  "$APP_NAME not runing"
   else
     echo "$APP_NAME runing PID: $pid"
   fi
}

checkpid(){
   if [[ -f "$APP_PID" ]]; then
        pid=$(cat "$APP_PID")
        checkPidNum
        if [ $? -eq 0 ];then
		return 0;
        else
                return 1;
        fi
   else
        checkPidNum
        if [ $? -eq 0 ];then
		echo "${?}"
		return 0;
        else
                return 1;
        fi
   fi
}

checkPidNum(){
   	PIDNUM=`ps -ef|grep $JAR_FILE|grep -v grep|awk '{print $2}'`
	if [ -z "${PIDNUM}" ]; then
		echo "pid is null."
		return 0
	else
		echo "${APP_NAME} running. pid=${pid}"
		return 1
	fi
}
stop(){
    checkpid
    if [ $? -eq 0 ]; then
      echo "$APP_NAME not runing"
    else
      echo "$APP_NAME stop..."
      kill -9 $pid
    fi
}
restart(){
    stop
    sleep 1s
    start
}

case $1 in
          start) start;;
          stop)  stop;;
          restart)  restart;;
          status)  status;;
              *)  echo "require start|stop|restart|status"  ;;
esac

说明

本文只做学习参考,如有任何不准确的地方欢迎指正。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值