Posts Tagged ‘ job

Evitando solapamientos en cron con lockrun

Es algo muy común que programemos una tarea en cron periódica cada x tiempo, todo debe funcionar bien para tiempos relativamente grandes, p.e tareas diárias, semanales, etc.

Pero para tiempos pequeños, ¿quién nos garantiza que dicha tarea va a ejecutarse en menos de ese x tiempo?

Un ejemplo más ilustrativo, supongamos el caso de una tarea que actualiza el índice de un motor de búsqueda, para tenerlo lo más reciente posible lo actualizaremos cada minuto.

Dicha tarea puede ser que tarde más de un minuto en ejecutarse, debido a la carga de trabajo de la misma, ¿qué ocurre entonces? ¡Exacto! Se solapan las ejecuciones de la tarea…

Si esto ocurre, es posible que las distintas instancias corrompan algún fichero que modifiquen o, es más, que nos saturen los servidores.

Para esto existe la solución lockrun, bloqueo de ejecución, consiste en un pequeño programita el cual se encargará de gestionar las ejecuciones de dicha tarea.

Para hacer uso de él simplemente descargar lockrun.c de aquí; http://www.unixwiz.net/tools/lockrun.html

Compilar con gcc lockrun.c -o lockrun y luego copiar el ejecutable a /usr/local/bin/.

Hecho estos sólo tendremos que añadir a nuestras tareas en crontab /usr/local/bin/lockrun –lockfile=/var/run/tarea.lock — <tarea> y el solito se encargará de gestionar dichas ejecuciones :)