| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/bin/bash
- # 生产环境停止脚本
- # 用于停止验证码发送服务(邮件/短信)
- set -e # 遇到错误立即退出
- # 获取脚本所在目录
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
- cd "$SCRIPT_DIR"
- # 颜色输出
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- RED='\033[0;31m'
- NC='\033[0m' # No Color
- # 服务类型:email 或 sms 或 all
- SERVICE_TYPE="${1:-all}"
- # 停止服务的函数
- stop_email_service() {
- PID_FILE="$SCRIPT_DIR/send_email.pid"
- if [ -f "$PID_FILE" ]; then
- PID=$(cat "$PID_FILE")
- if ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}🛑 正在停止邮件服务 (PID: $PID)...${NC}"
- kill "$PID"
- # 等待进程结束
- for i in {1..10}; do
- if ! ps -p "$PID" > /dev/null 2>&1; then
- break
- fi
- sleep 1
- done
- # 如果还在运行,强制杀死
- if ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}⚠️ 强制停止邮件服务...${NC}"
- kill -9 "$PID" 2>/dev/null || true
- fi
- rm -f "$PID_FILE"
- echo -e "${GREEN}✅ 邮件服务已停止${NC}"
- else
- echo -e "${YELLOW}⚠️ 邮件服务进程不存在 (PID: $PID)${NC}"
- rm -f "$PID_FILE"
- fi
- else
- # 尝试通过进程名查找
- PIDS=$(pgrep -f "send_email.py" || true)
- if [ -n "$PIDS" ]; then
- echo -e "${YELLOW}🛑 正在停止邮件服务 (通过进程名查找)...${NC}"
- echo "$PIDS" | xargs kill 2>/dev/null || true
- sleep 2
- echo "$PIDS" | xargs kill -9 2>/dev/null || true
- echo -e "${GREEN}✅ 邮件服务已停止${NC}"
- else
- echo -e "${YELLOW}⚠️ 未找到运行中的邮件服务${NC}"
- fi
- fi
- }
- stop_sms_service() {
- PID_FILE="$SCRIPT_DIR/send_sms_gn.pid"
- if [ -f "$PID_FILE" ]; then
- PID=$(cat "$PID_FILE")
- if ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}🛑 正在停止短信服务 (PID: $PID)...${NC}"
- kill "$PID"
- # 等待进程结束
- for i in {1..10}; do
- if ! ps -p "$PID" > /dev/null 2>&1; then
- break
- fi
- sleep 1
- done
- # 如果还在运行,强制杀死
- if ps -p "$PID" > /dev/null 2>&1; then
- echo -e "${YELLOW}⚠️ 强制停止短信服务...${NC}"
- kill -9 "$PID" 2>/dev/null || true
- fi
- rm -f "$PID_FILE"
- echo -e "${GREEN}✅ 短信服务已停止${NC}"
- else
- echo -e "${YELLOW}⚠️ 短信服务进程不存在 (PID: $PID)${NC}"
- rm -f "$PID_FILE"
- fi
- else
- # 尝试通过进程名查找
- PIDS=$(pgrep -f "send_sms_gn.py" || true)
- if [ -n "$PIDS" ]; then
- echo -e "${YELLOW}🛑 正在停止短信服务 (通过进程名查找)...${NC}"
- echo "$PIDS" | xargs kill 2>/dev/null || true
- sleep 2
- echo "$PIDS" | xargs kill -9 2>/dev/null || true
- echo -e "${GREEN}✅ 短信服务已停止${NC}"
- else
- echo -e "${YELLOW}⚠️ 未找到运行中的短信服务${NC}"
- fi
- fi
- }
- # 根据参数停止相应服务
- case "$SERVICE_TYPE" in
- email)
- stop_email_service
- ;;
- sms)
- stop_sms_service
- ;;
- all)
- stop_email_service
- sleep 1
- stop_sms_service
- echo ""
- echo -e "${GREEN}✅ 所有服务已停止${NC}"
- ;;
- *)
- echo -e "${RED}❌ 错误: 未知的服务类型 '$SERVICE_TYPE'${NC}"
- echo ""
- echo "用法: $0 [email|sms|all]"
- echo ""
- echo "参数说明:"
- echo " email - 仅停止邮件验证码发送服务"
- echo " sms - 仅停止短信验证码发送服务"
- echo " all - 停止所有服务(默认)"
- exit 1
- ;;
- esac
|