springboot项目通用管理shell脚本

#!/bin/bash
#
# description: Starts and stops the App.jar
# author:hewenmin

# 注:脚本运行.jar文件需要放在目录 $vjar_prefix_env/programs/$APP_NAME/$ENV 下(环境前缀/programs/jar名称/运行环境/api)


vrun_method=$1
vjar_name=$2
vjar_profile=$3
vjar_run_user=$4
vjar_run_port=$5
vjar_prefix_env=/www

#-----------------判断参数执行方法定义begin----------------------

check_vjar_name(){
if  [ ! -n "$vjar_name" ] ;then
   echo "jar文件名称为空"
   out_explain
   exit
fi
}

check_vjar_profile(){
if  [ ! -n "$vjar_profile" ] ;then
   echo "请输入运行profile环境"
   out_explain
   exit
fi
}

check_vjar_run_user(){
if  [ ! -n "$vjar_run_user" ] ;then
   echo "启动脚本用户为空"
   out_explain
   exit
fi
}

check_vjar_prefix_env(){
if  [ ! -n "$vjar_prefix_env" ] ;then
   #echo "项目环境目录为空,默认输出到【/www】目录下"
   vjar_prefix_env=/www
fi
}

out_explain(){
    echo "参数备注:./springboot_ssl.sh 运行方法 jar文件名 profile环境 执行用户 端口号(没有采用配置文件中端口号)"
    echo "例如:./springboot_ssl.sh start springboot_demo test root 8080"
    echo "讲解:运行 /www/programs/springboot_demo/test/springboot_demo.jar的文件,运行测试环境,以root身份运行,运行在8080端口"
}

checkpid(){
    pid=`ps -ef |grep $JAR_FILE |grep -v grep |awk '{print $2}'`
}

#-----------------判断参数执行方法定义end-------------------


#-----------------根据执行方法判断所需要参数being----------------------



if  [ "$1" = "start" ] ;then
    check_vjar_name
    check_vjar_profile
    check_vjar_run_user
    check_vjar_prefix_env
fi

if  [ "$1" = "stop" ] ;then
    check_vjar_name
fi

if  [ "$1" = "restart" ] ;then
    check_vjar_name
fi

if  [ "$1" = "status" ] ;then
    check_vjar_name
fi

server_port=
if  [ -n "$vjar_run_port" ] ;then
    server_port="--server.port=$vjar_run_port"
fi

#-----------------根据执行方法判断所需要参数end-------------------


#----------------------------初始化环境变量begin----------------------------------

ENV=$vjar_profile
RUNNING_USER=$vjar_run_user
APP_NAME=$vjar_name

#定义jar文件和log文件目录
APP_PREFIX_HOME="$vjar_prefix_env/programs/$APP_NAME/$ENV/api"
APP_LOG_HOME="$vjar_prefix_env/logs/$APP_NAME/$ENV"

#具体文件名称
LOG_PATH=$APP_LOG_HOME/catalina.out
GC_LOG_PATH=$APP_LOG_HOME/gc-catalina.out.log
JAR_FILE=$APP_NAME.jar

#ENV=test
#RUNNING_USER=root
#APP_NAME=springboot_demo
#APP_PREFIX_HOME=/www
#APP_LOG_HOME="/www/logs/$APP_NAME/$ENV"
ADATE=`date +%Y%m%d%H%M%S`


#JMX监控需用到
JMX="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1091 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
#JVM参数
JVM_OPTS="-Dname=$APP_NAME-$ENV -Djeesuite.configcenter.profile=$ENV -Duser.timezone=Asia/Shanghai -Xms512M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDateStamps -Xloggc:$GC_LOG_PATH -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"

#----------------------------初始化环境变量end----------------------------------

pid=0
start(){
  checkpid
  if [ ! -n "$pid" ]; then
    checkdir
    JAVA_CMD="nohup java -jar $JVM_OPTS $APP_PREFIX_HOME/$JAR_FILE $server_port --spring.profiles.active=$ENV  > $LOG_PATH 2>&1 &"
    su - $RUNNING_USER -c "$JAVA_CMD"
    echo "---------------------------------"
    echo "启动完成,按CTRL+C退出日志界面即可>>>>>"
    echo "---------------------------------"
    sleep 2s
    tail -f $LOG_PATH
  else
      echo "$APP_NAME is runing PID: $pid"   
  fi

}


checkdir(){
    dirname $0|grep "^/" >/dev/null
    if [ $? -eq 0 ];then
        APP_LOG_HOME=`dirname $0`
    else
        dirname $0|grep "^\." >/dev/null
        retval=$?
        if [ $retval -eq 0 ];then
            APP_LOG_HOME=`dirname $0|sed "s#^.#$APP_LOG_HOME#"`
        else
            APP_LOG_HOME=`dirname $0|sed "s#^#$APP_LOG_HOME/#"`
        fi
    fi

    if [ ! -d "$APP_LOG_HOME" ];then
      mkdir -p $APP_LOG_HOME
    fi
}


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

stop(){
    checkpid
    if [ ! -n "$pid" ]; 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

猜你喜欢

转载自blog.csdn.net/u012946310/article/details/81198725