run.sh 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/bin/bash
  2. # 服务管理脚本
  3. APP_NAME="xiwu_agent_server" # 自定义服务名称
  4. PID_FILE="./gunicorn_log/gunicorn.pid" # PID 文件路径
  5. LOG_FILE="./gunicorn_log/gunicorn.log" # 日志文件路径
  6. START_COMMAND="gunicorn -c gunicorn_config.py server.app:app"
  7. case "$1" in
  8. start)
  9. if [ -f "$PID_FILE" ]; then
  10. if kill -0 $(cat "$PID_FILE") >/dev/null 2>&1; then
  11. echo "✅ $APP_NAME 已在运行 (PID: $(cat $PID_FILE))"
  12. exit 1
  13. else
  14. rm -f "$PID_FILE"
  15. fi
  16. fi
  17. echo "🚀 启动 $APP_NAME..."
  18. nohup $START_COMMAND >> "$LOG_FILE" 2>&1 &
  19. echo $! > "$PID_FILE"
  20. echo "🟢 启动成功! PID: $(cat $PID_FILE)"
  21. echo "📝 日志输出: $LOG_FILE"
  22. ;;
  23. stop)
  24. if [ ! -f "$PID_FILE" ]; then
  25. echo "🔴 $APP_NAME 未运行"
  26. exit 1
  27. fi
  28. PID=$(cat "$PID_FILE")
  29. echo "🛑 停止 $APP_NAME (PID: $PID)..."
  30. kill -TERM $PID
  31. rm -f "$PID_FILE"
  32. echo "⭕ 已停止"
  33. ;;
  34. restart)
  35. $0 stop
  36. sleep 2
  37. $0 start
  38. ;;
  39. status)
  40. if [ -f "$PID_FILE" ]; then
  41. if kill -0 $(cat "$PID_FILE") >/dev/null 2>&1; then
  42. echo "🟢 $APP_NAME 正在运行 (PID: $(cat $PID_FILE))"
  43. else
  44. echo "❌ PID 文件存在但进程未运行"
  45. rm -f "$PID_FILE"
  46. fi
  47. else
  48. echo "🔴 $APP_NAME 未运行"
  49. fi
  50. ;;
  51. *)
  52. echo "使用方法: $0 {start|stop|restart|status}"
  53. exit 1
  54. esac
  55. exit 0