#!/bin/bash # 健康检查脚本 # 用于监控爬虫运行状态 # 获取脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" cd "$PROJECT_DIR" echo "==========================================" echo "健康检查: $(date '+%Y-%m-%d %H:%M:%S')" echo "==========================================" STATUS=0 # 1. 检查Python进程 echo "" echo "[1/5] 检查Python进程..." if pgrep -f "main.py" > /dev/null; then echo "✅ 爬虫正在运行" echo " 进程ID: $(pgrep -f 'main.py')" else echo "⚠️ 爬虫未运行" fi # 2. 检查磁盘空间 echo "" echo "[2/5] 检查磁盘空间..." DISK_USAGE=$(df -h . | awk 'NR==2 {print $5}' | sed 's/%//') echo " 当前使用率: ${DISK_USAGE}%" if [ "$DISK_USAGE" -gt 80 ]; then echo "❌ 警告:磁盘空间使用率超过80%!" STATUS=1 elif [ "$DISK_USAGE" -gt 60 ]; then echo "⚠️ 磁盘空间使用率超过60%" else echo "✅ 磁盘空间正常" fi # 3. 检查数据文件 echo "" echo "[3/5] 检查数据文件..." if [ -d "data" ]; then CSV_COUNT=$(find data -name "*.csv" 2>/dev/null | wc -l) JSON_COUNT=$(find data -name "*.json" 2>/dev/null | wc -l) echo " CSV文件数: $CSV_COUNT" echo " JSON文件数: $JSON_COUNT" TOTAL_COUNT=$((CSV_COUNT + JSON_COUNT)) if [ "$TOTAL_COUNT" -gt 0 ]; then echo "✅ 数据文件存在" else echo "⚠️ 暂无数据文件" fi else echo "❌ 警告:data目录不存在" STATUS=1 fi # 4. 检查日志文件 echo "" echo "[4/5] 检查日志文件..." if [ -d "logs" ]; then LOG_COUNT=$(find logs -name "*.log" 2>/dev/null | wc -l) echo " 日志文件数: $LOG_COUNT" # 检查最近的日志 LATEST_LOG=$(ls -t logs/*.log 2>/dev/null | head -1) if [ -n "$LATEST_LOG" ]; then echo " 最新日志: $LATEST_LOG" echo " 最后几行:" tail -5 "$LATEST_LOG" | sed 's/^/ /' fi else echo "⚠️ logs目录不存在" fi # 5. 检查配置文件 echo "" echo "[5/5] 检查配置文件..." if [ -f "config.py" ]; then echo "✅ config.py 存在" else echo "❌ config.py 不存在" STATUS=1 fi if [ -f "config_fixed.py" ]; then echo "✅ config_fixed.py 存在" else echo "❌ config_fixed.py 不存在" STATUS=1 fi echo "" echo "==========================================" if [ $STATUS -eq 0 ]; then echo "✅ 健康检查完成,状态正常" else echo "⚠️ 健康检查完成,存在警告" fi echo "==========================================" exit $STATUS