指定jdk的jar包启动脚本

脚本内容:

APP_NAME="testApp"
BASE_DIR="/project/addr"
JAR_FILE="$BASE_DIR/${APP_NAME}.jar"
LOG_DIR="$BASE_DIR/logs"
INFO_LOG="$LOG_DIR/info.log"
ERROR_LOG="$LOG_DIR/error.log"
JDK_PATH="$BASE_DIR/jdk1.8.0_211"

# JVM 参数设置
JVM_OPTIONS="-server -Xms512m -Xmx1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m -Djava.awt.headless=true -Duser.timezone=GMT+08 -Xloggc:$LOG_DIR/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=$LOG_DIR/heapdump.hprof"

# 使用绝对路径来指定jdk下的java命令
JAVA_CMD="$JDK_PATH/bin/java"

# PID 文件路径
PID_FILE="$BASE_DIR/${APP_NAME}.pid"

# 检查日志目录是否存在,不存在则创建
if [ ! -d "$LOG_DIR" ]; then
  mkdir -p "$LOG_DIR"
fi

# 启动程序
start() {
  if [ -f "$PID_FILE" ]; then
    echo "服务已经在运行中,PID为$(cat $PID_FILE)"
  else
    nohup $JAVA_CMD $JVM_OPTIONS -jar $JAR_FILE >$INFO_LOG 2>$ERROR_LOG &
    echo $! > $PID_FILE
    echo "服务启动成功,PID为$(cat $PID_FILE)"
  fi
}

# 停止程序
stop() {
  if [ -f "$PID_FILE" ]; then
    kill $(cat $PID_FILE)
    rm -f $PID_FILE
    echo "服务已停止"
  else
    echo "服务未运行"
  fi
}

# 查看服务状态
status() {
  if [ -f "$PID_FILE" ]; then
    echo "服务正在运行,PID为$(cat $PID_FILE)"
  else
    echo "服务未运行"
  fi
}

# 重启程序
restart() {
  stop
  sleep 3
  start
}

case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  restart)
    restart
    ;;
  status)
    status
    ;;
  *)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac

exit 0

 授予脚本可执行权限:

chmod u+x run.sh

执行方法:

启动服务:./run.sh start
停止服务:./run.sh stop
重启服务:./run.sh restart
查看状态:./run.sh status

会生成info error等日志,在logs目录中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值