flock is een Linux/Unix utility die gebruikt wordt om bestandsvergrendeling (file locking) te implementeren, wat vooral handig is in combinatie met crontab om te voorkomen dat meerdere instanties van hetzelfde script tegelijkertijd draaien.

Voordelen van flock met crontab

  1. Voorkomt overlappende uitvoeringen: Zorgt dat een volgende cronjob niet start als de vorige nog draait
  2. Eenvoudig te implementeren: Slechts een kleine aanpassing aan je crontab nodig
  3. Betrouwbaarder dan PID-bestanden: Minder kans op race conditions dan zelfgemaakte oplossingen
  4. Automatische lock-release: De lock wordt automatisch vrijgegeven als het script eindigt
  5. Werkt over netwerk mounts: Kan ook gebruikt worden met NFS (mits correct geconfigureerd)

Nadelen van flock met crontab

  1. Lockbestanden beheer: Je moet ervoor zorgen dat lockbestanden op een geschikte locatie staan
  2. Mogelijke stale locks: Als het systeem crasht, kan een lock achterblijven (zelden bij flock), daarom is dit aan te raden om de lockbestanden in /tmp/ te zetten.

Hoe flock werkt met crontab

Een typisch gebruik in crontab ziet er zo uit:

* * * * * /usr/bin/flock -n /tmp/script.lock /path/to/script.sh