Files
stock/stock-html/setup_cron_scan.sh
freedakgmail 9c7d7abdd4 Initial commit
2026-07-17 18:49:35 +08:00

52 lines
2.3 KiB
Bash
Executable File

#!/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\""