status_prod.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. # 生产环境服务状态查看脚本
  3. # 用于查看 FastAPI 后端服务的运行状态
  4. # 获取脚本所在目录
  5. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
  6. # 颜色输出
  7. GREEN='\033[0;32m'
  8. YELLOW='\033[1;33m'
  9. RED='\033[0;31m'
  10. BLUE='\033[0;34m'
  11. NC='\033[0m' # No Color
  12. echo -e "${BLUE}📊 Lyrria 后端服务状态${NC}"
  13. echo "=================================="
  14. echo ""
  15. PID_FILE="$SCRIPT_DIR/backend.pid"
  16. if [ -f "$PID_FILE" ]; then
  17. PID=$(cat "$PID_FILE")
  18. if ps -p "$PID" > /dev/null 2>&1; then
  19. echo -e "${GREEN}✅ 服务运行中${NC}"
  20. echo " PID: $PID"
  21. ps -p "$PID" -o pid,etime,cmd --no-headers | awk '{print " 运行时间: " $2}'
  22. # 显示端口占用情况
  23. PORT_INFO=$(lsof -i :8000 -P -n 2>/dev/null | grep LISTEN || true)
  24. if [ -n "$PORT_INFO" ]; then
  25. echo " 端口 8000: 已监听"
  26. else
  27. echo -e " ${YELLOW}端口 8000: 未监听${NC}"
  28. fi
  29. else
  30. echo -e "${RED}❌ 服务未运行 (PID 文件存在但进程不存在)${NC}"
  31. fi
  32. else
  33. # 尝试通过进程名查找
  34. PIDS=$(pgrep -f "uvicorn main:app" || true)
  35. if [ -n "$PIDS" ]; then
  36. echo -e "${YELLOW}⚠️ 服务运行中 (但未找到 PID 文件)${NC}"
  37. echo " PIDs: $PIDS"
  38. else
  39. echo -e "${RED}❌ 服务未运行${NC}"
  40. fi
  41. fi
  42. echo ""
  43. # 显示日志文件信息
  44. if [ -f "$SCRIPT_DIR/backend_nohup.log" ]; then
  45. LOG_SIZE=$(ls -lh "$SCRIPT_DIR/backend_nohup.log" | awk '{print $5}')
  46. LOG_TIME=$(stat -f "%Sm" -t "%Y-%m-%d %H:%M:%S" "$SCRIPT_DIR/backend_nohup.log" 2>/dev/null || stat -c "%y" "$SCRIPT_DIR/backend_nohup.log" 2>/dev/null | cut -d. -f1)
  47. echo " 后台日志: backend_nohup.log ($LOG_SIZE, 最后更新: $LOG_TIME)"
  48. fi
  49. if [ -d "$SCRIPT_DIR/logs" ]; then
  50. LOG_COUNT=$(ls -1 "$SCRIPT_DIR/logs"/*.log 2>/dev/null | wc -l | tr -d ' ')
  51. if [ "$LOG_COUNT" -gt 0 ]; then
  52. echo " 应用日志: logs/ 目录 ($LOG_COUNT 个日志文件)"
  53. fi
  54. fi
  55. echo ""
  56. echo "=================================="
  57. echo -e "${BLUE}💡 提示:${NC}"
  58. echo " 启动服务: ./start_prod.sh"
  59. echo " 停止服务: ./stop_prod.sh"
  60. echo " 查看日志: tail -f backend_nohup.log"
  61. echo " 查看应用日志: tail -f logs/request_*.log"