#!/bin/bash # 服务启动脚本 # 自动从目录名推断服务名称 # 获取脚本所在目录和服务名 SCRIPT_DIR=$(dirname "$(readlink -f "$0")") APP_HOME=$(dirname "$SCRIPT_DIR") APP_NAME=$(basename "$APP_HOME") # 日志目录 LOG_HOME="/datacfs/applogs/${APP_NAME}" # JAR文件路径 JAR_FILE="${APP_HOME}/lib/${APP_NAME}.jar" # PID文件路径 PID_FILE="${APP_HOME}/${APP_NAME}.pid" # 加载环境变量配置(如果存在) if [ -f "${APP_HOME}/conf/env.properties" ]; then source "${APP_HOME}/conf/env.properties" fi # JVM参数(可通过环境变量覆盖) JAVA_OPTS="${JAVA_OPTS:--Xms256m -Xmx512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200}" # 日志参数 LOG_OPTS="-Dlogging.file.path=${LOG_HOME} -DAPP_NAME=${APP_NAME}" # 配置文件路径 CONFIG_OPTS="--spring.config.location=${APP_HOME}/conf/application.yml" # 检查是否已运行 if [ -f "$PID_FILE" ]; then PID=$(cat $PID_FILE) if ps -p $PID > /dev/null 2>&1; then echo "${APP_NAME} is already running (PID: $PID)" exit 1 fi fi # 创建日志目录 mkdir -p ${LOG_HOME} # 启动服务 echo "Starting ${APP_NAME}..." echo " APP_HOME: ${APP_HOME}" echo " LOG_HOME: ${LOG_HOME}" echo " JAVA_OPTS: ${JAVA_OPTS}" nohup java $JAVA_OPTS $LOG_OPTS -jar $JAR_FILE $CONFIG_OPTS > /dev/null 2>&1 & # 保存PID echo $! > $PID_FILE echo "${APP_NAME} started (PID: $(cat $PID_FILE))"