La configuración de anacrontab. Linux y pecados capitales cuarta parte

julio 03, 2022 , 0 Comments

Página del manual de anacron

Anacron permite ejecutar programas aunque la fecha indicada se haya pasado.


Estamos haciendo una lista de software y herramientas para Linux utilizado como guía la lista de los siete pecados capitales. Al igual que en los artículos anteriores usamos a la pereza como excusa para hablar de herramientas de automatización en Linux. Una de ellas en anacron.  En este artículo veremos cómo es la configuración de anacrontab. anacrontab es la que le indica a anacron qué es lo que debe hacer y cuándo hacerlo.

En anacron la fecha de las tareas se fija en días y, en caso de que el ordenador no esté funcionando al momento de ejecutar una tarea, esta se pone en marcha cuando este se pone en marcha.

La configuración de anacrontab

En principio anacron busca la lista de tareas a ejecutar en el directorio /etc/anacrontab. Las tareas deben escribirse en el siguiente formato:

período retraso identificador del trabajo comando donde:

  • período: Frecuencia con la que debe realizarse el trabajo. Puede expresarse en días (su abreviatura en inglés) lapso ( @daily, @weekly, o @monthly para día, semana o mes) o con números (1 para día, 7 para semana, 30 para mes y cualquier número para un período arbitrario de días.
  • retraso: La cantidad de tiempo a esperar antes de comenzar el trabajo. Por ejemplo 360 para ejecutar una tarea a las 6 de la mañana.
  • identificador del trabajo: Nombre asignado al trabajo para distinguirlo de los otros en los informes de errores y resultados
  • .

  • comando: Es la instrucción que debe ejecutar anacron en el momento señalado.

Como nuestra intención es usar anacron para tareas que no tienen que ver con la administración del sistema, vamos a replicar los directorios usados por cron en nuestra carpeta de usuario local. Lo hacemos con

mkdir -p ~/.local/etc/anacrontab: ~/.local/etc/cron.daily ~/.local/etc/cron.weekly ~/.local/etc/cron.daily  ~/.var/spool/anacron

Con esto creamos los directorios para guardar los distintos scripts diarios, semanales y mensuales, así como el lugar donde se va a guardar el informe de la última ejecución de anacron.

Para terminar, le indicamos a anacron que use nuestras carpetas de usuario local en lugar de las del sistema.

anacron -fn -t ~/.local/etc/anacrontab -S ~/.var/spool/anacron

Ahora vamos a editar un archivo de configuración. Lo hacemos desde la terminal con:

nano ~/.local/etc/anacrontab:

En el documento que se abre agregamos estas líneas:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Estas líneas cumplen las mismas funciones que ya explicamos para crontab. Indicar que debe usar Bash como intérprete de comandos y en que directorios encontrar los ejecutables. Guardamos el documento con May + 0 y lo cerramos con May +  X.

El nombre y la ubicación de las carpetas cron que creamos es una elección arbitraria. Yo opté por mantener los que se usan por defecto para no confundir a los lectores que requieran de información adicional de otras fuentes. Mientras en acrontab se indique la ruta al script se puede usar la carpeta y ruta de almacenamiento que se prefiera. Lo mismo vale para el identificador del trabajo.

Hay otras dos variables que podemos configurar:

  • START_HOURS_RANGE
  • : establece el rango de tiempo en el que se iniciarán los trabajos (es decir, ejecutar trabajos solo durante las siguientes horas).

  • RANDOM_DELAY
  • : esto define el retraso aleatorio máximo agregado al retraso definido por el usuario de un trabajo (por defecto es 45).

¿Cuál es la diferencia entre cron y anacron?

cron es lo que en los sistemas y derivados se conoce como un daemon es decir un programa que se ejecuta en segundo plano y sin intervención del usuario. Está pensado para servidores, es decir equipos que funcionan en forma casi permanente sin necesidad de que nadie esté prestándole atención, pero requiere frecuentes tareas de mantenimiento.

anacron  es un programa normal más apto para computadoras de escritorio que no están continuamente encendidas. Es por eso que, a diferencia de cron, donde la menor unidad de tiempo es el minuto, se trabaja con una frecuencia mínima de un día.

Por el mismo motivo, cron no incluye alternativas para el caso de que el equipo no esté encendid
o mientras que anacron repasa las tareas pendientes al iniciar sesión.  Cuando encuentra un trabajo no iniciado en el momento establecido, ejecutará el comando especificado en el campo de comando después de esperar el número de minutos indicado en el campo de retraso. Luego registrará la fecha en un archivo de marca de tiempo.


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.