reloj

Automatización de entradas. Anacron

Con cron, el sistema se supone que siempre está funcionando pero esto no ocurre en muchas máquinas como por ejemplo en nuestros ordenadores personales. Para servidores o máquinas que están encendidas las 24 horas, cron es la herramienta ideal pero para las demás, existen programadores de tareas como por ejemplo anacron que pueden ser más útiles.
El funcionamiento de anacron es sencillo, se inicia junto con el sistema y mira cuales tareas todavía no sen han realizado y las realiza. Suelen ser las tareas que se dejan programadas en los directorios del tipo /etc/cron.* (daily, hourly…).
Si tienes un Ubuntu ya vendrá instalado por defecto pero si lo has desinstalado o por la razón que sea no viene instalado en tu sistema puedes instalarlo mediante el comando:

$ apt-get install anacron

¿Por que puede ser mejor anacron que cron?

Imagina que tienes una tarea programada para todos los días a las 4 de la tarde y el equipo está apagado. Si lo tuvieses programado con cron la tarea no se realizaría pero con anacron te aseguras que por lo menos una vez se ejecutará

Formato del Anacrontab

Al igual que cron que tiene su /etc/crontab, anacron tiene su propio /etc/anacrontab.
Este fichero tiene el siguiente formato:

periodo retraso identificador_del_trabajo comando

* Campo 1 (periodo de recurrencia), Indica el número de días:
1 – diario
7 – semanal
30 – mensual
N – Cualquier número en el que N indica el número de días.
Nota: También se puede utilizar ‘@monthly’ para un job que se necesite ejecutar mensualmente

* Campo 2 (retraso) es el retraso: Número de minutos que tiene que esperar anacron desde que arranque la máquina.

* Campo 3 (identificador_del_trabajo): Indica donde almacena la marca de tiempo del trabajo. Debería de ser única por cada trabajo. Estará disponible bajo el directorio /var/spool/anacron. Este fichero contendrá una única línea donde indica cuando fue la última vez que se ejecutó el trabajo:

$ ls /var/spool/anacron/
prueba.daily cron.daily cron.monthly cron.weekly

$ cat /var/spool/anacron/prueba.daily
20130917

Según el ejemplo anterior la última vez que se ejecutó fue el 17/9/2013

* Campo 4. Es el comando a ejecutar.

Recuerda: Los comentarios en el fichero anacron también comienzan por #

Ejemplo de Anacron

Imaginemos que queremos ejecutar el script /home/andrino/backup.sh cada 7 días.
El día que supuestamente el job backup.sh debe de ser ejecutado, si el sistema está abajo por alguna razón, anacrón lo ejecutará una vez pasados 15 minutos tras arrancar la máquina sin tener que esperar otros 7 días.

$ cat /etc/anacrontab
7 15 test.daily /bin/sh /home/andrino/backup.sh

START_HOURS_RANGE y RANDOM_DELAY

En el ejemplo anterior con un delay de 15 minutos se ejecuta cada 7 días el script backup.sh ¿Qué ocurre cuando el equipo no se reinicia? ¿En ese caso cuando se ejecuta el trabajo?
Esto se puede especificar con la variable de entorno START_HOURS_RANGE en el fichero /etc/anacrontab.
Un ejemplo sería añadir la siguiente línea al anacrontab:
START_HOURS_RANGE=3-22
Esto haría que se ejecutase el trabajo en un rango de 3 a.m a 10 p.m.

Además del delay especificado por el usuario en el segundo campo del fichero /etc/anacrontab, anacrón también añade de forma aleatoria un número de x minutos. Esta x está definida en la variable RANDOM_DELAY del fichero /etc/anacrontab. Por defecto está establecida en 45 (esto significa que anacrón añadirá un número de 0 a 45 minutos elegido aleatoriamente). Para añadir manualmente este retardo basta con añadir la siguiente línea:

RANDOM_DELAY=30

Esta linea anterior añadida al fichero hará que el anacron ejecute la tarea con un retardo aleatorio de 0 a 30 minutos.

Cron Vs Anacron

Cron y anacron tienen sus propias ventajas y desventajas. Dependiendo de lo que necesitemos usaremos uno u otro.

Ventajas de cron:

  • Más preciso. Se pueden ejecutar trabajos prácticamente cada minuto.
  • Cron puede programar jobs por cualquier usuario.
  • Cron espera que el sistema esté ejecutándose 24 x 7. Si se programa un job y el sistema está abajo no se ejecutará.
  • Granularidad mínima.
  • Ideal para servidores
  • Utiliza cron cuando el trabajo tenga que ser ejecutado a una hora y minutos concretos.
  • Ventajas de anacron:

  • La granularidad mínima es solo en días. (muchas veces no se necesita más).
  • Anacron solo se puede utilizar por root (aunque existen truquis para utilizarlo como un usuario normal )
  • Anacron no necesita que el sistema esté funcionando en modo 24 x 7.
  • Si un trabajo se programa y el sistema está abajo durante ese tiempo, cuando se reinicie los trabajos se ejecutarán.
  • Ideal para desktops y laptops.
  • Utiliza anacron cuando la hora y el minuto en el que se tenga que ejecutar el trabajo de igual.
  • Ejercicios

    Ejercicios.
    1 Deja preparada una tarea diaria para que una vez pasados 15 minutos tras encender la máquina clasifique todos los archivos de descargas por carpetas (los pdf a un directorio que se llame PDF y los doc a un directorio DOC).

    2 Semanalmente borra todos los archivos que no estén clasificados (los que no sean ni pdf ni doc).

    3 Prueba a forzar la ejecución de las tareas sin tener en cuenta la última vez que se ejecutaron con el comando:

    $ anacron -f

    4 Prueba también a ejecutar las tareas de forma inmediata (sin esperar el delay que indica el archivo /etc/anacrontab) con el comando:

    $ anacron -n

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

    Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>