stop.sh 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/bin/bash
  2. # GAT-LSTM TMP预测模型 API 服务停止脚本
  3. # 使用方法: bash stop.sh
  4. set -e
  5. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  6. PID_FILE="$SCRIPT_DIR/api.pid"
  7. echo "[停止] 停止GAT-LSTM TMP预测模型 API 服务..."
  8. # 检查PID文件是否存在
  9. if [ ! -f "$PID_FILE" ]; then
  10. echo "[警告] 未找到PID文件,服务可能未运行"
  11. exit 0
  12. fi
  13. # 读取PID
  14. PID=$(cat "$PID_FILE")
  15. # 检查进程是否存在
  16. if ! ps -p $PID > /dev/null 2>&1; then
  17. echo "[警告] 进程 (PID: $PID) 不存在,可能已经停止"
  18. rm -f "$PID_FILE"
  19. exit 0
  20. fi
  21. # 尝试优雅停止(SIGTERM)
  22. echo "[停止信号] 发送停止信号 (SIGTERM) 到进程 $PID..."
  23. kill -TERM $PID
  24. # 等待进程停止
  25. echo "[等待] 等待进程停止..."
  26. TIMEOUT=10
  27. COUNTER=0
  28. while ps -p $PID > /dev/null 2>&1; do
  29. sleep 1
  30. COUNTER=$((COUNTER + 1))
  31. if [ $COUNTER -ge $TIMEOUT ]; then
  32. echo "[警告] 进程未在 ${TIMEOUT}秒内停止,尝试强制停止..."
  33. kill -KILL $PID
  34. sleep 1
  35. break
  36. fi
  37. done
  38. # 再次检查进程是否停止
  39. if ps -p $PID > /dev/null 2>&1; then
  40. echo "[失败] 进程停止失败 (PID: $PID)"
  41. exit 1
  42. else
  43. echo "[成功] 服务已成功停止 (PID: $PID)"
  44. rm -f "$PID_FILE"
  45. fi