#!/bin/bash # SFTP Manager 部署脚本 (Linux/Mac) # 用法: ./deploy.sh {start|stop|restart} APP_NAME="sftp-manager" JAR_FILE="${APP_NAME}-1.0.0.jar" PID_FILE="${APP_NAME}.pid" LOG_FILE="${APP_NAME}.log" # 停止服务 stop() { if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if kill -0 "$PID" 2>/dev/null; then kill "$PID" echo "正在停止服务 (PID: $PID)..." for _ in $(seq 1 10); do sleep 1 kill -0 "$PID" 2>/dev/null || break done kill -9 "$PID" 2>/dev/null fi rm -f "$PID_FILE" echo "服务已停止" else echo "未找到 PID 文件,服务可能未运行" fi } # 启动服务 start() { if [ ! -f "$JAR_FILE" ]; then echo "错误: 未找到 $JAR_FILE,请先执行 mvn clean package" exit 1 fi if [ -f "$PID_FILE" ]; then PID=$(cat "$PID_FILE") if kill -0 "$PID" 2>/dev/null; then echo "服务已在运行 (PID: $PID)" exit 0 fi fi nohup java -jar "$JAR_FILE" --spring.profiles.active=prod > "$LOG_FILE" 2>&1 & echo $! > "$PID_FILE" echo "服务已启动 (PID: $(cat $PID_FILE))" } # 重启服务 restart() { stop sleep 2 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "用法: $0 {start|stop|restart}" exit 1 esac exit 0