#!/bin/bash # Simple loop: run mt_detail_sweep.py --limit 50 with 6min timeout per run # Kill Chrome after each run. Restart until nothing to do. MAIN_LOG="/tmp/mt_detail_live.txt" SCRIPT="c:/project/Cursor/Логистика/mt_detail_sweep.py" PYTHON="python" LIMIT=50 DELAY=0.8 TIMEOUT_SEC=420 # 7 minutes per run (login ~60s + 50 vessels ~200s = ~260s, generous) MAX_RUNS=400 cd "c:/project/Cursor/Логистика" echo "[LOOP $(date +%H:%M:%S)] Starting sweep loop (LIMIT=$LIMIT DELAY=${DELAY}s TIMEOUT=${TIMEOUT_SEC}s)" > "$MAIN_LOG" for ((run=1; run<=MAX_RUNS; run++)); do RUN_LOG="/tmp/mt_run_${run}.txt" echo "" >> "$MAIN_LOG" echo "[LOOP $(date +%H:%M:%S)] === Run $run ===" | tee -a "$MAIN_LOG" # Run Python in background, output to per-run log $PYTHON -u "$SCRIPT" --limit $LIMIT --delay $DELAY > "$RUN_LOG" 2>&1 & CHILD_PID=$! echo "[LOOP] PID=$CHILD_PID" >> "$MAIN_LOG" # Wait up to TIMEOUT_SEC for child to finish, checking every 5s WAITED=0 while [ $WAITED -lt $TIMEOUT_SEC ]; do sleep 5 WAITED=$((WAITED + 5)) if ! kill -0 $CHILD_PID 2>/dev/null; then break # Process ended naturally fi done # Kill if still running after timeout if kill -0 $CHILD_PID 2>/dev/null; then echo "[LOOP $(date +%H:%M:%S)] Killing PID $CHILD_PID (timeout ${TIMEOUT_SEC}s)" | tee -a "$MAIN_LOG" kill -TERM $CHILD_PID 2>/dev/null || true sleep 5 kill -KILL $CHILD_PID 2>/dev/null || true sleep 2 fi wait $CHILD_PID 2>/dev/null || true EXIT_CODE=$? echo "[LOOP $(date +%H:%M:%S)] Run $run done (waited=${WAITED}s)" | tee -a "$MAIN_LOG" # Append run log to main log if [ -f "$RUN_LOG" ]; then tail -20 "$RUN_LOG" >> "$MAIN_LOG" fi # Kill any leftover Chrome wmic process where "name='chrome.exe'" delete >NUL 2>&1 sleep 2 # Check if done — only look at THIS run's output if [ -f "$RUN_LOG" ] && grep -q "Nothing to do!\|Vessels to process: 0" "$RUN_LOG" 2>/dev/null; then echo "[LOOP] COMPLETE — nothing left to process!" | tee -a "$MAIN_LOG" break fi # Brief pause between runs sleep 5 done echo "[LOOP $(date +%H:%M:%S)] Supervisor done after $run runs." | tee -a "$MAIN_LOG"