springboot运维那些事

Linux 启动脚本spingboot

2020-04-06  本文已影响0人  Bruce基

介绍说明

目前使用的是springboot工程,所以重新写了一版程序启动脚本,记录一下自己的成果。

脚本实例

#!/bin/sh
#
# Copyright (c) 2019 by lulongij.
# All rights reserved.
#
#ident  "@(#)bruce 1.0"


#项目jar名称
APP_NAME=monitor

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

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

#JVM参数
JVM_OPTS='-Xms1024m -Xmx1024m -XX:MaxPermSize=256m -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.properties"

#日志文件
LOG_FILE="--logging.config=$APP_HOME/conf/logback.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")
        PIDNUM=`ps -ef |grep "$pid" -i |grep -v grep |wc -l`
        if [ $PIDNUM -eq 0 ];then
        return 0;
        else
                return 1;
        fi
   else
        return 0;
   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

说明

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

我的邮箱: lulongji2011@163.com

版权声明:

本文为博主原创文章,转载请附上原文出处链接和本声明。

上一篇下一篇

猜你喜欢

热点阅读