anacron, el complemento de cron


reloj

Para programar tareas como la rotación de las bitácoras o la actualización de los repositorios del sistema se utiliza el demonio cron. Estas tareas comúnmente son planificadas para ejecutarse en la madrugada o en otro período de poco uso del sistema. Pero si el PC está apagado en el momento en que la tarea fue programada, entonces esta no será ejecutada por cron.

Anacron es una aplicación que ejecuta tareas programadas al igual que cron pero asumiendo que el sistema no está encendido todo el día. La finalidad de anacron es controlar la ejecución de tareas críticas que no pueden pasarse por alto, las cuales cron no correrá una vez que se haya encendido el sistema ya que su tiempo de ejecución expiró.

En ese sentido, anacron es un complemento de cron para sistemas que no están encendidos las 24 horas del día (como laptops y PCs de escritorio) o para garantizar la ejecución de tareas críticas, incluso si el sistema tiene una interrupción temporal.

Funcionamiento de anacron

Cuando anacron se ejecuta lee un lista de tareas definidas en el archivo /etc/anacrontab. Cada entrada en este archivo especifica un período en días, un retardo en minutos, un identificador de tarea único y un comando a ejecutar. Analicemos el archivo /etc/anacrontab que viene en el sistema:

Tiempo en días Retardo Identificador Comando
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
@monthly 15 cron.monthly run-parts /etc/cron.monthly

Tomemos como ejemplo la segunda línea. Esta indica que la próxima vez que se corra anacron se revisará si han pasado 7 días desde la última ejecución, consultado la fecha en el archivo /var/spool/anacron/cron.weekly. De ser así se volverán a correr los scripts del directorio /etc/cron.weekly una vez que hayan pasado 10 minutos después de la ejecución de anacron.

Como comenté previamente, el identificador de tarea debe ser único. Esto es porque anacron creará un archivo en el directorio /var/spool/anacron para cada una de las tareas con su identificador. Allí se guardará la fecha de la última ejecución de la tarea por parte de anacron, de forma que se pueda comparar con el primer campo (el de tiempo en días). Vamos a comprobar esto:

moody:~# ls /var/spool/anacron/
cron.daily  cron.monthly  cron.weekly

Efectivamente, anacron creó un archivo por cada identificador de tarea especificado en el /etc/anacrontab. Ahora veamos el contenido de uno de ellos:

moody:~# cat /var/spool/anacron/cron.weekly
20090323

Esto indica que el día 23/03/2009 se ejecutaron los scripts del directorio /etc/cron.weekly, que es el comando programado en la segunda línea del archivo /etc/anacrontab de nuestro ejemplo.

¿Cuándo se ejecuta anacron?

A diferencia de cron, anacron no es un demonio, es decir, no está corriendo todo el tiempo. De hecho solo corre a través de scripts de inicio del sistema o a través de tareas programadas de cron.

¿Sustituye anacron a cron?

No. Con anacron no se pueden programar tareas en intervalos menores a días, mientras que con cron se pueden planificar tareas a ser ejecutadas en horas o minutos. Por otro lado, anacron no ejecuta tareas en tiempo específicos como cron hace.

Referencias

Artículos relacionados:

  1. Actualización automática de Debian con cron-apt
  2. Agregar repositorios de Ubuntu a cron-apt en Debian

,

Los Comentarios están cerrados