Locker un fichier pour éviter qu’il ne soit exécuté deux fois en même temps

Parfois il est nécessaire qu’un fichier ne s’exécute qu’en une seule instance. Par exemple un fichier php qui est inscrit dans une tâche CRON et qui doit mettre à jour une table soit être le seul à tourner, sinon on saboterait l’intégrité des données de la table.

Sous Linux, pour éviter qu’une tâche CRON soit la seule à tourner, il y a différentes manières plus ou moins simples.

Locker un fichier

CRON lui même ne sait pas empêcher qu’un fichier puisse être appelé plusieurs fois en concurrence. Il n’y a aucun moyen d’empêcher cela. LE concept d’empêchement de lancer un second processus s’appelle le locking.

* * * * flock -n /var/lock/myjob.lock /path/to/script

dans l’exemple ci-dessus, la commande flock crée un fichier de lock, pour l’exécution du fichier script.

Il existe un programme qui s’appelle lockrun et qui permet de lancer un job et de locker le fichier en une seule commande.

Lockrun

lockrun --lockfile=/var/tmp/mylock myscript.sh

 

 

Retour en haut