diff --git a/run-fs-scraper-mac.sh b/run-fs-scraper-mac.sh index 92bdd40..3fdab47 100755 --- a/run-fs-scraper-mac.sh +++ b/run-fs-scraper-mac.sh @@ -40,7 +40,22 @@ close_tunnel() { } # ── Main ────────────────────────────────────────────────────────────────────── +LOCK_FILE="/tmp/tip-fs-scraper.lock" + mkdir -p "$(dirname "$LOG")" + +# Prevent simultaneous runs (e.g. launchd fires during a still-running instance) +if [ -f "$LOCK_FILE" ]; then + LOCK_PID=$(cat "$LOCK_FILE" 2>/dev/null || echo "") + if [ -n "$LOCK_PID" ] && kill -0 "$LOCK_PID" 2>/dev/null; then + echo "[$(date '+%Y-%m-%d %H:%M:%S')] Already running (PID $LOCK_PID) — skipping" >> "$LOG" + exit 0 + fi + rm -f "$LOCK_FILE" +fi +echo $$ > "$LOCK_FILE" +trap 'rm -f "$LOCK_FILE"' EXIT + log "=== FS.com Mac Scraper starting ===" # Only close tunnel if we opened it (not if one was already running)