#!/bin/bash # 배치 분석 자동 실행을 위한 cron 설정 (Docker 컨테이너 내부 실행) # 매일 아침 8시 50분에 실행 (장 시작 전 분석) SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_DIR="$SCRIPT_DIR/logs" CONTAINER="autostock-backend" DOCKER_BIN="$(command -v docker)" # 로그 디렉토리 생성 mkdir -p "$LOG_DIR" if [ -z "$DOCKER_BIN" ]; then echo "❌ 오류: docker 명령어를 찾을 수 없습니다." exit 1 fi # cron 작업 추가 (기존 작업 중복 방지) TOKEN_JOB="0 6 * * 1-5 $DOCKER_BIN exec $CONTAINER python /app/prefetch_token.py >> $LOG_DIR/token_prefetch.log 2>&1" DAILY_JOB="50 8 * * 1-5 $DOCKER_BIN exec $CONTAINER python /app/batch_daily_analysis.py >> $LOG_DIR/batch_analysis.log 2>&1" INTRADAY_JOB="*/10 9-15 * * 1-5 $DOCKER_BIN exec $CONTAINER python /app/batch_intraday_analysis.py >> $LOG_DIR/batch_intraday.log 2>&1" ADDED=0 # 토큰 선제 발급 (06:00) (crontab -l 2>/dev/null | grep -F "prefetch_token.py") || { (crontab -l 2>/dev/null; echo "$TOKEN_JOB") | crontab - echo "✅ Token prefetch cron added (06:00 평일)" ADDED=1 } # 아침 전체 배치 (crontab -l 2>/dev/null | grep -F "batch_daily_analysis.py") || { (crontab -l 2>/dev/null; echo "$DAILY_JOB") | crontab - echo "✅ Daily batch cron added (08:50 평일)" ADDED=1 } # 장중 미니배치 — 항상 최신 설정(*/10)으로 교체 crontab -l 2>/dev/null | grep -v "batch_intraday_analysis.py" | crontab - (crontab -l 2>/dev/null; echo "$INTRADAY_JOB") | crontab - echo "✅ Intraday batch cron set (*/10 9-15 평일, 분석종목 관리)" ADDED=1 if [ $ADDED -eq 0 ]; then echo "✅ All cron jobs already exist" exit 0 fi echo "" echo "📅 스케줄:" echo " - 토큰 선제발급: 06:00 평일" echo " - 아침 배치: 08:50 평일 (500종목 전체 분석)" echo " - 장중 미니배치: 09:00~15:30 매 10분 평일 (분석종목 재분석·진입·제거)" echo "📝 로그:" echo " - $LOG_DIR/token_prefetch.log" echo " - $LOG_DIR/batch_analysis.log" echo " - $LOG_DIR/batch_intraday.log" echo "🐳 실행 컨테이너: $CONTAINER" echo "" echo "확인: crontab -l" echo "수정: crontab -e"