| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #!/usr/bin/env bash
- #
- # DataOps Platform 停止脚本(Supervisor)
- #
- set -euo pipefail
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- # shellcheck source=dataops-common.sh
- source "${SCRIPT_DIR}/dataops-common.sh"
- stop_app() {
- echo_info "正在停止 ${APP_NAME}..."
- if ! pgrep -x supervisord >/dev/null 2>&1; then
- echo_warn "supervisord 未运行"
- if pgrep -f "${RUN_SCRIPT}" >/dev/null \
- || pgrep -f "gunicorn.*wsgi:application" >/dev/null; then
- echo_info "发现残留 Gunicorn 进程,正在终止..."
- pkill -f "${RUN_SCRIPT}" 2>/dev/null || true
- pkill -f "gunicorn.*wsgi:application" 2>/dev/null || true
- else
- echo_info "${APP_NAME} 未在运行"
- fi
- return 0
- fi
- local status
- status="$(supervisorctl status "${APP_NAME}" 2>/dev/null | awk '{print $2}' || echo "UNKNOWN")"
- if [[ "${status}" == "STOPPED" || "${status}" == "UNKNOWN" ]]; then
- echo_info "${APP_NAME} 已经停止"
- return 0
- fi
- supervisorctl stop "${APP_NAME}"
- sleep 2
- supervisorctl status "${APP_NAME}" || true
- echo_info "${APP_NAME} 已停止"
- }
- main() {
- echo "=========================================="
- echo " DataOps Platform 停止脚本"
- echo "=========================================="
- if [[ "${EUID}" -ne 0 ]]; then
- echo_error "请使用 sudo 运行此脚本"
- exit 1
- fi
- stop_app
- echo ""
- echo_info "停止完成"
- }
- main "$@"
|