Programación de tareas asíncronas en Linux con Anacron

Consigue gratis tu cuenta

Curso de Vagrant

En este curso aprenderás a utilizar Vagrant para poder crear tus propias máquinas virtuales con diferentes sistemas operativos en cuestión de minutos. Con Vagrant mejorarás tu productividad y tendrás tu entorno de desarrollo configurado rápidamente. ¿Quieres saber más? ¡Apúntate!

Comenzar ahora

Programación de tareas asíncronas en Linux con Anacron gnu geeky theory tutorial

Anacron es un servicio que se ejecuta cada vez que se inicia un sistema Linux y que complementa a cron. Su objetivo es comprobar si alguna tarea programada por el cron no ha sido realizada debido a que el sistema no estuviera encendido. Por ejemplo, si tenemos programado un backup con el cron de Linux a las 3 de la madrugada pero por lo que sea nuestro equipo estaba apagado en ese momento, anacron lo detectará y realizará las operaciones pertinentes.

Dado que Anacron se ejecuta al iniciar la máquina, es posible que perdamos algo (no mucho) de rendimiento, ya que al fin y al cabo es un programa que se inicia como otros, aunque no lo veamos. Al ejecutarse, lo hace siguiendo la configuración del archivo localizado en /etc/anacrontab. El contenido de mi archivo (en Ubuntu 14.04) es el siguiente:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1	5	cron.daily	run-parts --report /etc/cron.daily
7	10	cron.weekly	run-parts --report /etc/cron.weekly
@monthly	15	cron.monthly	run-parts --report /etc/cron.monthly

La explicación no es muy complicada: al principio se declaran 4 variables de entorno y luego tenemos las 3 últimas líneas, que describen el horario y los scripts que deben ser ejecutados. La primera columna representa el período en días, semanas o meses (@daily, @weekly o @yearly) que utiliza anacron para comprobar si una determinada tarea ha sido ejecutada en ese día, semana o mes. La segunda columna expresa los minutos que debe esperar anacron para ejecutar la tarea al encender el equipo, en caso de que haya que ejecutarla. En este caso, para tareas diarias esperaría 5 minutos, para semanales 10 y para las mensuales 15. En la tercera columna muestra el identificador de la tarea: diaria, semanal o mensual. Finalmente tenemos una cuarta columna que muestra el comando a ejecutar en caso de que sea necesario. Este comando ejecuta los archivos que estén dentro de las carpetas /etc/cron.daily, weekly y monthly.

Para cada tarea, anacron comprueba si ha sido realizada previamente en el periodo específico. En caso de haber sido ejecutada, no se hace nada. Si por lo contrario, no ha sido ejecutada, anacron espera un tiempo establecido en la segunda columna para ejecutar el comando de la cuarta.


¿Quieres seguir aprendiendo?