#!/bin/bash # # DataOps Platform 停止脚本 # 使用 supervisorctl 停止 gunicorn 服务 # set -e # 配置变量 APP_NAME="dataops-platform" APP_DIR="/opt/dataops-platform" # 颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color echo_info() { echo -e "${GREEN}[INFO]${NC} $1" } echo_warn() { echo -e "${YELLOW}[WARN]${NC} $1" } echo_error() { echo -e "${RED}[ERROR]${NC} $1" } # 停止应用 stop_app() { echo_info "正在停止 ${APP_NAME}..." # 检查 supervisor 是否运行 if ! pgrep -x "supervisord" > /dev/null; then echo_warn "supervisord 未运行" # 尝试直接杀死 gunicorn 进程 if pgrep -f "gunicorn.*${APP_NAME}" > /dev/null; then echo_info "发现 gunicorn 进程,正在终止..." pkill -f "gunicorn.*${APP_NAME}" || true echo_info "gunicorn 进程已终止" else echo_info "${APP_NAME} 未在运行" fi return 0 fi # 检查应用状态 status=$(sudo 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 # 停止应用 sudo supervisorctl stop ${APP_NAME} # 等待停止 sleep 2 # 检查停止状态 status=$(sudo supervisorctl status ${APP_NAME} | awk '{print $2}') if [ "$status" = "STOPPED" ]; then echo_info "${APP_NAME} 已停止" else echo_warn "状态: ${status}" fi sudo supervisorctl status ${APP_NAME} } # 主函数 main() { echo "==========================================" echo " DataOps Platform 停止脚本" echo "==========================================" stop_app echo "" echo_info "停止完成!" } main "$@"