Sobre cron y anacron para perezosos. Linux y pecados capitales tercera parte
En la tercera parte de esta serie de artículos en la que estamos usando a los siete pecados capitales como excusa para conocer herramientas y programas para Linux, comentaremos más sobre la configuración de cron y hablaremos de una alternativa
cron es un programa que funciona en forma autónoma para ejecutar tareas de mantenimiento del sistema en forma periódica. Las tareas están especificadas en un archivo de texto conocido como crontab.
Sobre cron y anacron
En los artículos anteriores comentamos la estructura de las instrucciones que hay que darle a cron. Ahora veremos una forma fácil de redactar el archivo crontab.
El comando crontab –e
nos genera un archivo crontab casi en blanco. Solo hay unas líneas precedidas del signo del numeral (#). Este signo indica que son comentarios y no deben intentar ejecutarse. Podemos borrarlos o dejarlos.
Deberíamos comenzar agregando estas líneas:
SHELL=/bin/bash
: Especifica que el shell que se debe utilizar para ejecutar los comandos es Bash. Un shell es un intérprete de comandos que permite que el usuario acceda a recursos del sistema.
MAILTO=una_dirección_de_mail:
En las distribuciones para servidor es común que se especifique una dirección de correo electrónico para que los administradores reciban informes de errores. Por eso es la opción que cron utiliza por defecto para enviarlos. En los equipos de escritorio esa dirección no está configurada por lo que podemos hacerlo con esta variable.
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
: Esto nos evita tener que especificar la ruta al ejecutable de cada comando.
anacron
Cron es la más conocida de las herramientas de automatización, pero tiene el inconveniente que, si el ordenador se apaga o está suspendido, la tarea no se realiza hasta que se vuelve a la fecha preestablecida. Anacron. por el contrario, se ocupa de que al reanudar la sesión se pongan en ejecución las tareas que quedaron pendientes. El programa averigua cuándo fue la última vez que se ejecutó una instrucción y la frecuencia con que se le indicó que debería realizarse. La lista de trabajos pendientes se registra en un archivo de texto llamado en este caso anacrontab. A diferencia de cron y crontab la fecha se establece fijando un día, un retraso en minutos, un identificador de trabajo y el comando a ejecutar.
Para cada trabajo, Anacron verifica si este trabajo se ha ejecutado en los últimos n días, donde n es el período especificado para ese trabajo. Si no, Anacron ejecuta el comando de shell del trabajo, después de esperar el número de minutos especificado como el parámetro de retraso.
Después de que finaliza el comando, Anacron registra la fecha en un archivo de marca de tiempo especial para ese trabajo, para que pueda saber cuándo ejecutarlo nuevamente. Solo se usa la fecha para los cálculos de tiempo. No se utiliza la hora.
Podemos encontrar anacron bajo este nombre o como parte de otro paquete denominado cronie en los repositorios de las principales distribuciones Linux.
Parámetros de Anacron
-f: Ejecuta la tarea sin importar si es la fecha indicada.
-u: Cambia la fecha de los trabajos a la actual, pero no los ejecuta.
-s: Establece que solo se comenzará una tarea cuando se termine la anterior.
-n: Ejecuta el trabajo sin importar que sea la fecha. Activa el parámetro -s.
-d: No se ejecuta en segundo plano y los errores se genera como un mensaje de error estándar. El resultado de los trabajos se envía por mail. En caso de tratarse de un sistema de escritorio la dirección de mail se configura como indicamos más arriba.
-q: Evita que se generen mensajes de error estándar. Se usa junto con –d.
-t: En caso de que se quiera usar una lista de tareas diferente a la que se crea por defecto, este parámetro le indica a anacron cuál debe usar.
-T: Testea la lista de tareas para ver si está correctamente configurada. En caso de que no lo esté genera un mensaje de error.
-S Almacena marcas de tiempo en un directorio especificado para ser utilizadas por anacron.
En el próximo artículo veremos como configurar correctamente anacrontab