#!/bin/bash # 定时搜索脚本启动器 # 用于启动广西政府采购网和大化县政府网公告定时搜索任务 # 自动激活项目虚拟环境并运行Python脚本 # 设置脚本遇到错误时退出 set -e # 获取脚本所在目录的绝对路径 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$SCRIPT_DIR" echo "========================================" echo "🕒 政府采购公告定时搜索任务" echo "📂 项目目录: $PROJECT_ROOT" echo "🌐 监控网站:" echo " - 广西政府采购网 (zfcg.gxzf.gov.cn)" echo " - 大化县政府网 (gxdh.gov.cn)" echo "⏰ 开始时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "========================================" # 检查虚拟环境 VENV_PATH="$PROJECT_ROOT/venv" if [ ! -d "$VENV_PATH" ]; then echo "❌ 错误: 找不到虚拟环境目录" echo " 预期路径: $VENV_PATH" echo " 请确保虚拟环境已正确创建" exit 1 fi # 检查虚拟环境激活脚本 VENV_ACTIVATE="$VENV_PATH/bin/activate" if [ ! -f "$VENV_ACTIVATE" ]; then echo "❌ 错误: 找不到虚拟环境激活脚本" echo " 预期路径: $VENV_ACTIVATE" exit 1 fi echo "✅ 找到虚拟环境: $VENV_PATH" # 激活虚拟环境 echo "🔧 激活虚拟环境..." echo " 激活脚本: $VENV_ACTIVATE" source "$VENV_ACTIVATE" # 检查Python环境(在虚拟环境中) if ! command -v python &> /dev/null; then echo "❌ 错误: 虚拟环境中未找到Python命令" exit 1 fi # 检查Python版本(在虚拟环境中) PYTHON_VERSION=$(python --version 2>&1 | cut -d' ' -f2 | cut -d. -f1-2) echo "🐍 Python版本 (虚拟环境): $PYTHON_VERSION" # 检查项目目录 if [ ! -d "$PROJECT_ROOT/gx_gp_monitor" ]; then echo "❌ 错误: 找不到gx_gp_monitor目录" echo " 预期路径: $PROJECT_ROOT/gx_gp_monitor" exit 1 fi # 检查cron_crawl.py文件 CRON_SCRIPT="$PROJECT_ROOT/gx_gp_monitor/cron_crawl.py" if [ ! -f "$CRON_SCRIPT" ]; then echo "❌ 错误: 找不到cron_crawl.py文件" echo " 预期路径: $CRON_SCRIPT" exit 1 fi echo "✅ 环境检查通过" # 检查当前时间是否在夜间休息时间段 (23:00 - 07:00) CURRENT_HOUR=$(date +%H) CURRENT_MINUTE=$(date +%M) CURRENT_TIME=$((CURRENT_HOUR * 60 + CURRENT_MINUTE)) START_TIME=$((23 * 60 + 0)) # 23:00 END_TIME=$((7 * 60 + 0)) # 07:00 if [ $CURRENT_TIME -ge $START_TIME ] || [ $CURRENT_TIME -lt $END_TIME ]; then echo "🌙 当前时间 $(date '+%H:%M') 在夜间休息时间段 (23:00-07:00)" echo "💤 跳过爬取任务,直接结束" echo "========================================" echo "🏁 任务跳过" echo "📅 结束时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "🔚 退出代码: 0 (跳过)" echo "✅ 任务跳过成功" echo "========================================" exit 0 fi echo "🚀 启动定时搜索脚本..." # 切换到项目根目录 cd "$PROJECT_ROOT" # 执行定时爬取脚本 python "$CRON_SCRIPT" EXIT_CODE=$? echo "========================================" echo "🏁 任务完成" echo "📅 结束时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "🔚 退出代码: $EXIT_CODE" if [ $EXIT_CODE -eq 0 ]; then echo "✅ 任务执行成功" else echo "❌ 任务执行失败" fi echo "========================================" exit $EXIT_CODE