spring boot jar包启动脚本

这是一个用于在Linux环境下管理和监控Java应用程序的shell脚本。它支持启动、停止、重启和检查应用状态,并配置了JVM参数,如内存设置、JMX监控和日志记录。此外,还解决了无头模式下Java验证码不显示的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

执行:

/home/jenkins-script/spring-boot-deploy.sh restart dev root cloud-gateway-server /home/cloud

日志:

tail -f /home/cloud/cloud-gateway-server/logs/cloud-gateway-server.log

脚本:

#!/bin/bash
#
# chkconfig:   - 20 80
# description: Starts and stops the App.
# author:cd

ENV=$2
RUNNING_USER=$3
APP_NAME=$4
SERVER_HOME=$5

APP_HOME=$SERVER_HOME/$APP_NAME

ADATE=`date +%Y%m%d%H%M%S`

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

if [ ! -d "$APP_HOME/logs" ];then
  mkdir -p $APP_HOME/logs
fi

LOG_PATH=$APP_HOME/logs/$APP_NAME.log
GC_LOG_PATH=$APP_HOME/logs/gc-$APP_NAME-$ADATE.log
#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 -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"

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

}


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

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

stop(){
    checkpid
    if [ ! -n "$pid" ]; then
     echo "$APP_NAME not runing"
    else
      echo "$APP_NAME stop..."
      kill -9 $pid
    fi 
}

restart(){
    stop 
    sleep 2s
    start
}

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

linux下验证码不显示问题解决:

JAVA_OPTIONS 添加:-Djava.awt.headless=true

jdk11 JVM基本参数有所修改:

JVM_OPTS="-Dname=$APP_NAME -Djeesuite.configcenter.profile=$ENV -Duser.timezone=Asia/Shanghai -Djava.awt.headless=true -Xms512M -Xmx512M -XX:+HeapDumpOnOutOfMemoryError -Xloggc:$GC_LOG_PATH -XX:+PrintGCDetails -XX:NewRatio=1 -XX:SurvivorRatio=30 -XX:+UseParallelGC -XX:+UseParallelOldGC"
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值