stop_dataops.sh 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. #!/usr/bin/env bash
  2. #
  3. # DataOps Platform 停止脚本(Supervisor)
  4. #
  5. set -euo pipefail
  6. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  7. # shellcheck source=dataops-common.sh
  8. source "${SCRIPT_DIR}/dataops-common.sh"
  9. stop_app() {
  10. echo_info "正在停止 ${APP_NAME}..."
  11. if ! pgrep -x supervisord >/dev/null 2>&1; then
  12. echo_warn "supervisord 未运行"
  13. if pgrep -f "${RUN_SCRIPT}" >/dev/null \
  14. || pgrep -f "gunicorn.*wsgi:application" >/dev/null; then
  15. echo_info "发现残留 Gunicorn 进程,正在终止..."
  16. pkill -f "${RUN_SCRIPT}" 2>/dev/null || true
  17. pkill -f "gunicorn.*wsgi:application" 2>/dev/null || true
  18. else
  19. echo_info "${APP_NAME} 未在运行"
  20. fi
  21. return 0
  22. fi
  23. local status
  24. status="$(supervisorctl status "${APP_NAME}" 2>/dev/null | awk '{print $2}' || echo "UNKNOWN")"
  25. if [[ "${status}" == "STOPPED" || "${status}" == "UNKNOWN" ]]; then
  26. echo_info "${APP_NAME} 已经停止"
  27. return 0
  28. fi
  29. supervisorctl stop "${APP_NAME}"
  30. sleep 2
  31. supervisorctl status "${APP_NAME}" || true
  32. echo_info "${APP_NAME} 已停止"
  33. }
  34. main() {
  35. echo "=========================================="
  36. echo " DataOps Platform 停止脚本"
  37. echo "=========================================="
  38. if [[ "${EUID}" -ne 0 ]]; then
  39. echo_error "请使用 sudo 运行此脚本"
  40. exit 1
  41. fi
  42. stop_app
  43. echo ""
  44. echo_info "停止完成"
  45. }
  46. main "$@"