#!/bin/bash # # 重启 Task 服务(Spring Boot JAR) # # 用法: restart-task.sh [profile] [jvm_opts] TASK_DIR="/opt/smartclean/task" JAR_FILE="$TASK_DIR/task.jar" PID_FILE="$TASK_DIR/task.pid" LOG_FILE="$TASK_DIR/logs/task.log" PROFILE="${1:-prod}" JVM_OPTS="${2:--Xms256m -Xmx512m}" # 停止旧进程 if [ -f "$PID_FILE" ]; then OLD_PID=$(cat "$PID_FILE") if kill -0 "$OLD_PID" 2>/dev/null; then echo "[INFO] 停止旧进程 PID=$OLD_PID" kill "$OLD_PID" sleep 3 if kill -0 "$OLD_PID" 2>/dev/null; then echo "[WARN] 进程未正常退出,强制终止" kill -9 "$OLD_PID" fi fi rm -f "$PID_FILE" fi # 启动新进程 echo "[INFO] 启动 Task 服务 (profile=$PROFILE)..." nohup java $JVM_OPTS \ -jar "$JAR_FILE" \ --spring.profiles.active=$PROFILE \ > "$LOG_FILE" 2>&1 & echo $! > "$PID_FILE" echo "[INFO] Task 服务已启动, PID=$(cat "$PID_FILE")"