64 lines
2.2 KiB
Bash
Executable File
64 lines
2.2 KiB
Bash
Executable File
#!/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"
|