#!/bin/bash # 在服务器上配置全景扫描定时任务 # 每个交易日执行两次:11:35(午休)和 16:00(收盘后) # 用法:在 stock-html 目录下执行 ./setup_cron_scan.sh set -e SERVER="${STOCK_SERVER:-root@8.146.207.22}" APP_DIR="${STOCK_APP_DIR:-/opt/stock-app}" echo "目标服务器: $SERVER" echo "应用目录: $APP_DIR" echo "定时规则: 每周一至周五 11:50(午休)+ 16:30(收盘后)执行全景扫描" echo "" # 1. 确保 auto_scan.sh 已同步到服务器 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" if [ -f "$SCRIPT_DIR/auto_scan.sh" ]; then echo "[1/3] 同步 auto_scan.sh 到服务器..." rsync -avz "$SCRIPT_DIR/auto_scan.sh" "$SERVER:${APP_DIR}/" else echo "[1/3] 未找到 auto_scan.sh,跳过同步(请确认服务器上已有该文件)" fi # 2. 在服务器上设为可执行并添加 crontab(两条定时任务) echo "[2/3] 设置可执行并添加定时任务..." ssh "$SERVER" "chmod +x ${APP_DIR}/auto_scan.sh && (crontab -l 2>/dev/null | grep -v auto_scan.sh || true; echo '50 11 * * 1-5 ${APP_DIR}/auto_scan.sh >> ${APP_DIR}/auto_scan.log 2>&1'; echo '30 16 * * 1-5 ${APP_DIR}/auto_scan.sh >> ${APP_DIR}/auto_scan.log 2>&1') | crontab -" echo "[3/3] 当前服务器 crontab:" ssh "$SERVER" "crontab -l" # 3.5. 同步 5分钟K线采集脚本 if [ -f "$SCRIPT_DIR/auto_sync_kline_5min.sh" ]; then echo "[3.5/4] 同步 auto_sync_kline_5min.sh 到服务器..." rsync -avz "$SCRIPT_DIR/auto_sync_kline_5min.sh" "$SCRIPT_DIR/sync_kline_5min.py" "$SERVER:${APP_DIR}/" ssh "$SERVER" "chmod +x ${APP_DIR}/auto_sync_kline_5min.sh" fi # 4. 添加 5分钟K线每日采集定时任务 echo "[4/4] 添加5分钟K线采集定时任务..." ssh "$SERVER" "(crontab -l 2>/dev/null | grep -v auto_sync_kline_5min || true; echo ''; echo '# 5分钟K线数据每日采集(收盘后,约50分钟完成)'; echo '30 17 * * 1-5 ${APP_DIR}/auto_sync_kline_5min.sh >> ${APP_DIR}/sync_kline_5min.log 2>&1') | crontab -" echo "" echo "配置完成。每个交易日将自动执行:" echo " - 11:50 午休扫描(上午收盘数据,供下午参考)" echo " - 16:30 收盘扫描(全天完整数据)" echo " - 17:30 5分钟K线采集(全市场约50分钟)" echo "" echo "日志:" echo " ${APP_DIR}/auto_scan.log" echo " ${APP_DIR}/sync_kline_5min.log" echo "手动测试: ssh $SERVER \"${APP_DIR}/auto_scan.sh\""