Cron : utiliser Flock pour éviter qu’une tâche planifiée ne se lance si elle est déjà en cours d’exécution.
Le planificateur de tâches de Linux (Cron) ne dispose pas des options avancées de son homologue sous Windows pour gérer la simultanéité des tâches.
En effet, si vous planifiez une tâche cron, toutes les 5 minutes par exemple (*/5 * * * * bash_dummy), que celle-ci soit toujours en cours d’exécution ou non, elle se relancera. La tâche n’attend pas la fin de la précédente exécution, ce qui va logiquement poser des soucis si votre tâche est longue à s’exécuter.
Pour faire un sorte qu’une tâche cron ne se lance pas plusieurs fois en simultané, il faut lancer la tâche avec Flock. Flock permet de créer un lockfile (fichier de blocage) basé sur le processus appelé. Si le lockfile est en cours d’utilisation, alors Flock ne lancera pas la tâche une deuxième fois. Pratique !
/usr/bin/flock -n /tmp/my.lockfile /usr/local/bin/my_script
Flock est installé sur Debian 9 et 10 par défaut. Il existe « run-one » sous Ubuntu pour faire la même chose.