#!/bin/bash # Wrapper: ensures only ONE heavy process runs, checks memory before starting. set -euo pipefail LOCKFILE="/tmp/heretic_heavy.lock" MEMCHECK="/home/jovyan/step37_work/.venv/bin/python /home/jovyan/heretic/memcheck.py" # 1. Check memory $MEMCHECK # 2. Acquire lock (non-blocking) exec 200>"$LOCKFILE" if ! flock -n 200; then echo "[run_heavy] Another heavy process is running. Waiting..." flock 200 fi echo "[run_heavy] Lock acquired. Running: $@" "$@" RC=$? # 3. Release lock on exit echo "[run_heavy] Finished with exit code $RC" exit $RC