linux脚本,支持jar启动,停止,重启

linux脚本,支持jar启动,停止,重启
新建 runjar.sh 

runjar.sh 授权可执行权限 

chmod +x runjar.sh

#!/bin/bash

# 自动获取脚本所在目录(保证 jar 和 sh 同目录即可)
SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
JAR_NAME="whisexchange.jar"
JAR_PATH="${SCRIPT_DIR}/${JAR_NAME}"

# JVM 参数
JAVA_OPTS="-Xms1024m -Xmx1024m -Dfile.encoding=UTF-8"
# JAR 参数
JAR_OPTS="--server.port=8181 --spring.config.location=${SCRIPT_DIR}/application-pro.yml"

# ===================== 修复点:每次调用都重新获取 PID =====================
get_pid() {
  ps -ef | grep "${JAR_PATH}" | grep -v grep | awk '{print $2}'
}

# 启动
start() {
  local PID=$(get_pid)
  if [ -n "$PID" ]; then
    echo "服务已运行,PID=${PID}"
    exit 1
  fi

  echo "正在启动 ${JAR_PATH} ..."
  cd "${SCRIPT_DIR}"
  nohup java ${JAVA_OPTS} -jar "${JAR_PATH}" ${JAR_OPTS} \
    >> nohup.out 2>&1 &

  sleep 2
  local NEW_PID=$(get_pid)
  if [ -n "$NEW_PID" ]; then
    echo "启动成功,PID=${NEW_PID}"
  else
    echo "启动失败,请查看 nohup.out"
  fi
}

# 停止
stop() {
  local PID=$(get_pid)
  if [ -z "$PID" ]; then
    echo "服务未运行"
    return
  fi
  echo "停止服务 PID=${PID}"
  kill -9 "${PID}"
  sleep 1
  echo "服务已停止"
}

# 重启
restart() {
  stop
  sleep 1
  start
}

case "$1" in
  start) start ;;
  stop) stop ;;
  restart) restart ;;
  *) echo "用法: $0 {start|stop|restart}" ;;
esac

已有 0 条评论

    欢迎您,新朋友,感谢参与互动!