#!/bin/bash # GAT-LSTM TMP预测模型 API 服务停止脚本 # 使用方法: bash stop.sh set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PID_FILE="$SCRIPT_DIR/api.pid" echo "[停止] 停止GAT-LSTM TMP预测模型 API 服务..." # 检查PID文件是否存在 if [ ! -f "$PID_FILE" ]; then echo "[警告] 未找到PID文件,服务可能未运行" exit 0 fi # 读取PID PID=$(cat "$PID_FILE") # 检查进程是否存在 if ! ps -p $PID > /dev/null 2>&1; then echo "[警告] 进程 (PID: $PID) 不存在,可能已经停止" rm -f "$PID_FILE" exit 0 fi # 尝试优雅停止(SIGTERM) echo "[停止信号] 发送停止信号 (SIGTERM) 到进程 $PID..." kill -TERM $PID # 等待进程停止 echo "[等待] 等待进程停止..." TIMEOUT=10 COUNTER=0 while ps -p $PID > /dev/null 2>&1; do sleep 1 COUNTER=$((COUNTER + 1)) if [ $COUNTER -ge $TIMEOUT ]; then echo "[警告] 进程未在 ${TIMEOUT}秒内停止,尝试强制停止..." kill -KILL $PID sleep 1 break fi done # 再次检查进程是否停止 if ps -p $PID > /dev/null 2>&1; then echo "[失败] 进程停止失败 (PID: $PID)" exit 1 else echo "[成功] 服务已成功停止 (PID: $PID)" rm -f "$PID_FILE" fi