#!/bin/bash # 服务启动脚本 # 用法: ./start.sh [服务名称] # 获取服务名称(从脚本所在目录推断) SCRIPT_DIR=$(dirname "$(readlink -f "$0")") APP_HOME=$(dirname "$SCRIPT_DIR") APP_NAME=$(basename "$APP_HOME") LOG_HOME="/datacfs/applogs/${APP_NAME}" JAR_FILE="${APP_HOME}/lib/${APP_NAME}.jar" PID_FILE="${APP_HOME}/${APP_NAME}.pid" # JVM参数 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}..." 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))"