70 lines
2.3 KiB
Bash
70 lines
2.3 KiB
Bash
|
|
#!/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"
|