CRON Adventures: Evitar la ejecución de tareas duplicadas
CRON en sus distintas implementaciones es el sistema ejecución programada de tareas más común en Linux.
Si tienes trabajos programados para ejecutarse periódicamente (cada minuto, cada hora) puede suceder que bien por la realización de un trabajo más largo de lo habitual, bien por alguna situación inesperada en la ejecución del mismo (pérdida de conexión), no se complete y no finalice el proceso en el tiempo estimado, de modo que, obedeciendo la pauta temporal programada en CRON, se vuelve a ejecutar la misma tarea sin que la anterior haya finalizado.
Este comportamiento se puede repetir una y otra vez pudiendo llevar, en el peor de los casos, al colapso el sistema con cientos de procesos similares ejecutándose simultáneamente.
Una forma sencilla de evitar esta situación es con el uso de flock (forma parte del paquete util-linux) a modo de interruptor para la ejecución de la tarea:
* * * * * /usr/bin/flock -n /tmp/tarea1.lock /home/usuario/tarea1_cada_minuto.sh