#!/bin/bash # 生产环境服务状态查看脚本 # 用于查看验证码发送服务的运行状态 # 获取脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # 颜色输出 GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' BLUE='\033[0;34m' NC='\033[0m' # No Color echo -e "${BLUE}📊 验证码发送服务状态${NC}" echo "==================================" echo "" # 检查邮件服务 check_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 "${GREEN}✅ 邮件服务运行中${NC}" echo " PID: $PID" ps -p "$PID" -o pid,etime,cmd --no-headers | awk '{print " 运行时间: " $2}' else echo -e "${RED}❌ 邮件服务未运行 (PID 文件存在但进程不存在)${NC}" fi else # 尝试通过进程名查找 PIDS=$(pgrep -f "send_email.py" || true) if [ -n "$PIDS" ]; then echo -e "${YELLOW}⚠️ 邮件服务运行中 (但未找到 PID 文件)${NC}" echo " PIDs: $PIDS" else echo -e "${RED}❌ 邮件服务未运行${NC}" fi fi # 显示日志文件信息 if [ -f "$SCRIPT_DIR/send_email.log" ]; then LOG_SIZE=$(ls -lh "$SCRIPT_DIR/send_email.log" | awk '{print $5}') LOG_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$SCRIPT_DIR/send_email.log" 2>/dev/null || stat -c "%y" "$SCRIPT_DIR/send_email.log" 2>/dev/null | cut -d. -f1) echo " 日志文件: send_email.log ($LOG_SIZE, 最后更新: $LOG_TIME)" fi echo "" } # 检查短信服务 check_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 "${GREEN}✅ 短信服务运行中${NC}" echo " PID: $PID" ps -p "$PID" -o pid,etime,cmd --no-headers | awk '{print " 运行时间: " $2}' else echo -e "${RED}❌ 短信服务未运行 (PID 文件存在但进程不存在)${NC}" fi else # 尝试通过进程名查找 PIDS=$(pgrep -f "send_sms_gn.py" || true) if [ -n "$PIDS" ]; then echo -e "${YELLOW}⚠️ 短信服务运行中 (但未找到 PID 文件)${NC}" echo " PIDs: $PIDS" else echo -e "${RED}❌ 短信服务未运行${NC}" fi fi # 显示日志文件信息 if [ -f "$SCRIPT_DIR/send_sms_gn.log" ]; then LOG_SIZE=$(ls -lh "$SCRIPT_DIR/send_sms_gn.log" | awk '{print $5}') LOG_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$SCRIPT_DIR/send_sms_gn.log" 2>/dev/null || stat -c "%y" "$SCRIPT_DIR/send_sms_gn.log" 2>/dev/null | cut -d. -f1) echo " 日志文件: send_sms_gn.log ($LOG_SIZE, 最后更新: $LOG_TIME)" fi echo "" } check_email_service check_sms_service echo "==================================" echo -e "${BLUE}💡 提示:${NC}" echo " 启动服务: ./start_prod.sh [email|sms|all]" echo " 停止服务: ./stop_prod.sh [email|sms|all]" echo " 查看日志: tail -f send_email.log 或 tail -f send_sms_gn.log"