Al ejecutar ambientes Linux es común que sea necesario programar determinadas tareas en un momento dado con el fin de llevar a cabo tareas de soporte, gestión o control.
Dos de los comandos más usados para dicho fin son cron y anacron los cuales han sido desarrollados con el objetivo de facilitar la programación de estas tareas de forma sencilla y práctica.
Dos de los parámetros más usados, junto a estos dos, son at y batch para la programación de las tareas en un tiempo específico. En este caso usaremos Ubuntu 17.04 Server.
1. Qué es Cron
Cron es un Daemon que podemos usar para llevar a cabo la ejecución de tareas programadas como respaldo de directorios, copias de seguridad del sistema, instalación de actualizaciones y es ideal para equipos que funcionan de forma periódica como los servidores.
Al usar cron, las tareas se crean en archivos crontab los cuales son scripts que definen la tarea a ejecutar y la ruta por defecto es /etc/crontab donde, al acceder con algún editor, veremos las respectivas tareas con su frecuencia de ejecución:
Pero al usar crontab podremos como usuarios crear nuestro propio archivo de tareas programadas, para ello ejecutamos la siguiente línea:
crontab -eAl ejecutar este comando podremos seleccionar hasta cinco opciones de editor para abrir el nuevo archivo a crear (en este caso hemos seleccionado la opción 2 nano) y veremos lo siguiente:
Allí simplemente será necesario registrar los datos de la tarea a ejecutar.
2. Cómo instalar Anacron
Para este estudio nos centraremos en Anacron el cual funciona de forma diferente a Cron ya que este permite la ejecución de tareas en equipos que su uso es periódico y no deben estar activos 24 X 7 como los servidores.
Con Anacron podremos llevar a cabo tareas con periodos de tiempo diarios, semanales y mensuales en equipos como portátiles o de escritorio asignados a las maquinas cliente y es útil ya que si en el momento que debe ser ejecutado el script el equipo no se encuentra disponible tan pronto lo este será ejecutado el script sin afectar el rendimiento ni la disponibilidad de este.
Para instalar y sacar el máximo provecho a Anacron ejecutaremos el siguiente comando:
sudo apt install anacron
sudo apt-get install anacron
3. Cómo usar Anacron
Los parámetros de configuración se alojan en la ruta /etc/anacrontab y la sintaxis a usar comprende los siguientes campos:
period delay job-identifier command
Al acceder a la ruta indicada veremos lo siguiente:
Los valores a usar son:
- Period: Indica la frecuencia con la cual se realizará la tarea en cuestión usando parámetros como @daily (diario), @weekly (semanal) o @monthly (mensual), pero también podremos usar los parámetros 1 - diario, 7 - semanal, 30 - mensual y N - número de días en los cuales se realizará la tarea.
- Delay: Hace referencia a la cantidad de minutos antes de ser ejecutada la tarea.
- Job Identifier: Indica el nombre que le otorgaremos a la tarea.
- Command: Hace referencia al comando o script a ser ejecutado.
Para conocer la estructura podremos ejecutar la siguiente línea:
ls -l /var/spool/anacron/
Básicamente Anacron verifica si una tarea ha sido ejecutada dentro del periodo inicial estipulado, si no es así, procede a ejecutar lo que hemos indicado en el campo command después de haber esperado el número de minutos indicados en el campo delay.
Una vez se haya ejecutado la tarea, esta será registrada en la ruta /var/spool/anacron con su respectiva fecha y hora.
Por ejemplo, podremos agregar la siguiente línea en el archivo anacrontab para programar una tarea diaria de respaldo con un retraso de 8 minutos:
@daily 8 solvetic.daily /bin/bash /home/solvetic/bin/backup.sh
Con este caso si cuando debe llevarse a cabo la tarea de respaldo la máquina está apagada, la próxima vez que sea iniciada esperara 8 minutos y realizara la tarea indicada sin esperar al día siguiente, etc. Dentro del archivo anacrontab debemos considerar dos aspectos fundamentales:
4. Diferencia entre Cron y Anacron
Existen una serie de diferencias entre estas dos utilidades las cuales mencionamos a continuación:
Con esto podremos decidir cuál es la mejor alternativa para programar determinadas tareas de respaldo en ambientes Linux.