107 lines
3.0 KiB
Bash
Executable File
107 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# 健壮分钟数据下载启动脚本
|
|
# 包含错误处理和自动重启功能
|
|
|
|
echo "========================================"
|
|
echo "🚀 赵云分钟数据下载器 - 健壮版启动"
|
|
echo "========================================"
|
|
|
|
# 配置参数
|
|
BASE_DIR="/Users/chufeng/nas/stock/minute_kline"
|
|
LOG_DIR="$BASE_DIR/logs"
|
|
SCRIPT_DIR="/Users/chufeng/.openclaw/sanguo_projects/sanguo_quant_live/zhaoyun-data/scripts/data_acquisition"
|
|
SCRIPT_NAME="simple_downloader.py"
|
|
|
|
# 创建日志目录
|
|
mkdir -p "$LOG_DIR"
|
|
|
|
# 生成唯一的日志文件名
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
LOG_FILE="$LOG_DIR/robust_download_${TIMESTAMP}.log"
|
|
PID_FILE="$SCRIPT_DIR/minute_download.pid"
|
|
|
|
echo "📊 配置信息:"
|
|
echo " 数据目录: $BASE_DIR"
|
|
echo " 日志文件: $LOG_FILE"
|
|
echo " 脚本目录: $SCRIPT_DIR"
|
|
echo " 开始时间: $(date)"
|
|
echo ""
|
|
|
|
# 检查是否已有进程在运行
|
|
if [ -f "$PID_FILE" ]; then
|
|
OLD_PID=$(cat "$PID_FILE")
|
|
if ps -p $OLD_PID > /dev/null 2>&1; then
|
|
echo "⚠️ 已有下载进程在运行 (PID: $OLD_PID)"
|
|
echo " 停止旧进程..."
|
|
kill $OLD_PID
|
|
sleep 2
|
|
fi
|
|
fi
|
|
|
|
# 启动下载进程
|
|
echo "🚀 启动分钟数据下载进程..."
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# 使用无限循环,出错后自动重启
|
|
while true; do
|
|
echo "$(date): 开始新下载周期..." >> "$LOG_FILE"
|
|
|
|
# 启动下载进程
|
|
nohup python3 "$SCRIPT_NAME" \
|
|
--timeframe 15min \
|
|
--start-date "2021-01-01" \
|
|
--end-date "2026-03-27" \
|
|
--batch-size 100 \
|
|
--max-workers 8 \
|
|
--retry-count 3 \
|
|
--all-stocks \
|
|
>> "$LOG_FILE" 2>&1 &
|
|
|
|
# 记录进程ID
|
|
DOWNLOAD_PID=$!
|
|
echo $DOWNLOAD_PID > "$PID_FILE"
|
|
|
|
echo "✅ 下载进程已启动 (PID: $DOWNLOAD_PID)"
|
|
echo "📄 日志文件: $LOG_FILE"
|
|
echo "⏱️ 开始时间: $(date)"
|
|
|
|
# 等待进程完成
|
|
wait $DOWNLOAD_PID
|
|
EXIT_CODE=$?
|
|
|
|
echo "$(date): 下载进程退出,代码: $EXIT_CODE" >> "$LOG_FILE"
|
|
|
|
# 检查退出代码
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
echo "✅ 下载任务正常完成"
|
|
echo "$(date): 下载任务正常完成" >> "$LOG_FILE"
|
|
break
|
|
elif [ $EXIT_CODE -eq 130 ]; then
|
|
echo "🛑 用户手动终止 (Ctrl+C)"
|
|
echo "$(date): 用户手动终止" >> "$LOG_FILE"
|
|
break
|
|
else
|
|
echo "⚠️ 下载进程异常退出 (代码: $EXIT_CODE)"
|
|
echo "⏳ 5秒后自动重启..."
|
|
echo "$(date): 进程异常退出,5秒后重启" >> "$LOG_FILE"
|
|
sleep 5
|
|
|
|
# 检查网络连接
|
|
echo "🔍 检查网络连接..."
|
|
if ping -c 3 baidu.com > /dev/null 2>&1; then
|
|
echo "✅ 网络连接正常"
|
|
else
|
|
echo "❌ 网络连接异常,等待30秒..."
|
|
sleep 30
|
|
fi
|
|
fi
|
|
done
|
|
|
|
# 清理
|
|
rm -f "$PID_FILE"
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo "⏱️ 下载任务结束时间: $(date)"
|
|
echo "📄 完整日志: $LOG_FILE"
|
|
echo "========================================" |