105 lines
2.6 KiB
Bash
105 lines
2.6 KiB
Bash
|
|
#!/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
|