#!/bin/bash # 加密货币市场扫描启动脚本 (Docker定时任务版本) # 用于在Docker容器中启动定时任务服务 # 设置错误时退出 set -e # 脚本所在目录 SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # 打印启动信息 echo "==========================================" echo "🚀 加密货币市场扫描定时服务启动" echo "==========================================" echo "工作目录: $(pwd)" echo "Python版本: $(python --version 2>&1)" echo "时区: $(date '+%Z %z')" echo "当前时间: $(date '+%Y-%m-%d %H:%M:%S')" echo "==========================================" # 检查Python是否安装 if ! command -v python &> /dev/null; then echo "❌ 错误: 未找到Python" exit 1 fi # 检查加密货币扫描器是否存在 if [ ! -f "crypto_scanner.py" ]; then echo "❌ 错误: 未找到crypto_scanner.py" exit 1 fi # 检查依赖包是否安装 echo "📦 检查依赖包..." if ! python -c "import binance" 2>/dev/null; then echo "⚠️ 警告: python-binance未安装,正在安装..." pip install -r requirements.txt fi # 创建日志目录 mkdir -p logs # 检查cron服务 if ! command -v cron &> /dev/null; then echo "⚠️ 警告: cron未安装,正在安装..." apt-get update && apt-get install -y cron fi # 安装加密货币扫描定时任务 echo "📅 安装加密货币扫描定时任务..." if [ -f "crontab/crypto-scanner" ]; then # 复制定时任务配置 cp crontab/crypto-scanner /etc/cron.d/crypto-scanner chmod 0644 /etc/cron.d/crypto-scanner echo "✅ 加密货币扫描定时任务已安装" else echo "❌ 错误: 未找到crontab/crypto-scanner文件" exit 1 fi # 启动cron服务 echo "🔄 启动cron定时服务..." service cron start # 显示当前的定时任务 echo "📋 当前定时任务列表:" crontab -l -u root 2>/dev/null || echo "暂无定时任务" echo "" echo "==========================================" echo "✅ 加密货币市场扫描定时服务启动完成" echo "==========================================" echo "📅 定时任务计划:" echo " - 每天 08:00: 扫描100个交易对 (隔夜行情)" echo " - 每天 16:00: 扫描100个交易对 (下午行情)" echo " - 每天 00:00: 扫描100个交易对 (晚间行情)" echo " - 每周日 10:00: 扫描200个交易对 (深度扫描)" echo "" echo "📊 日志文件: /app/logs/crypto_cron.log" echo "🔄 服务状态: $(service cron status | head -1)" echo "==========================================" # 保持容器运行,监控cron服务 echo "🔍 监控cron服务状态..." while true; do # 检查cron服务是否运行 if ! service cron status > /dev/null 2>&1; then echo "⚠️ cron服务停止,正在重启..." service cron start fi # 每小时输出一次状态 sleep 3600 echo "$(date '+%Y-%m-%d %H:%M:%S') - 加密货币扫描定时服务正常运行" done