Cron Vs Anacron: Cómo programar trabajos usando Anacron en Linux


En este artículo, explicaremos cron y anacron y también le mostraremos cómo configurar anacron en Linux. También cubriremos una comparación de estas dos utilidades.

Para programar una tarea en un momento determinado o posterior, puede usar los comandos "at" o "batch" y para configurar los comandos para que se ejecuten repetidamente, puede emplear las funciones cron y anacron.

Cron: es un demonio que se utiliza para ejecutar tareas programadas, como copias de seguridad del sistema, actualizaciones y muchas más. Es adecuado para ejecutar tareas programadas en máquinas que se ejecutarán continuamente 24 horas al día, 7 días a la semana, como servidores.

Los comandos/tareas se escriben en trabajos cron que se programan en archivos crontab. El archivo crontab del sistema predeterminado es/etc/crontab, pero cada usuario también puede crear su propio archivo crontab que puede ejecutar comandos en los momentos que el usuario defina.

Para crear un archivo crontab personal, simplemente escriba lo siguiente:

$ crontab -e

Cómo configurar Anacron en Linux

Anacron se utiliza para ejecutar comandos periódicamente con una frecuencia definida en días. Funciona un poco diferente a cron; asume que una máquina no estará encendida todo el tiempo.

Es apropiado para ejecutar trabajos programados diarios, semanales y mensuales que normalmente ejecuta cron, en máquinas que no funcionan las 24 horas, los 7 días de la semana, como computadoras portátiles y de escritorio.

Suponiendo que tiene una tarea programada (como un script de respaldo) que se ejecutará con cron cada medianoche, posiblemente cuando esté dormido, y su computadora de escritorio/computadora portátil esté apagada para ese momento. Su secuencia de comandos de respaldo no se ejecutará.

Sin embargo, si usa anacron, puede estar seguro de que la próxima vez que encienda la computadora de escritorio/portátil nuevamente, se ejecutará el script de respaldo.

Cómo funciona Anacron en Linux

Los trabajos de anacron se enumeran en/etc/anacrontab y los trabajos se pueden programar usando el formato siguiente (los comentarios dentro del archivo anacrontab deben comenzar con #).

period   delay   job-identifier   command

Del formato anterior:

  • período: esta es la frecuencia de ejecución del trabajo especificada en días o como @daily, @weekly o @monthly una vez al día, a la semana o al mes. También puede utilizar números: 1 - diario, 7 - semanal, 30 - mensual y N - número de días.
  • retraso: es la cantidad de minutos que se debe esperar antes de ejecutar un trabajo.
  • ID de trabajo: es el nombre distintivo del trabajo escrito en los archivos de registro.

Para ver archivos de ejemplo, escriba:

$ ls -l /var/spool/anacron/

total 12
-rw------- 1 root root 9 Jun  1 10:25 cron.daily
-rw------- 1 root root 9 May 27 11:01 cron.monthly
-rw------- 1 root root 9 May 30 10:28 cron.weekly

  • comando: es el comando o la secuencia de comandos de shell que se ejecutará.

  • Anacron comprobará si se ha ejecutado un trabajo dentro del período especificado en el campo de período. De lo contrario, ejecuta el comando especificado en el campo de comando después de esperar el número de minutos especificado en el campo de retraso.
  • Una vez que se ha ejecutado el trabajo, registra la fecha en un archivo de marca de tiempo en el directorio/var/spool/anacron con el nombre especificado en el campo job-id (nombre del archivo de marca de tiempo).

Veamos ahora un ejemplo. Esto ejecutará el script /home/aaronkilik/bin/backup.sh todos los días:

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh

Si la máquina está apagada cuando se espera que se ejecute el trabajo backup.sh, anacron lo ejecutará 10 minutos después de que la máquina se encienda sin tener que esperar otros 7 días.

Hay dos variables importantes en el archivo anacrontab que debe comprender:

  • START_HOURS_RANGE: establece el intervalo de tiempo en el que se iniciarán los trabajos (es decir, se ejecutarán los 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).

Así es como posiblemente se vería su archivo anacrontab.

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root

# These replace cron's entries
1       5       cron.daily      run-parts --report /etc/cron.daily
7       10      cron.weekly     run-parts --report /etc/cron.weekly
@monthly        15      cron.monthly    run-parts --report /etc/cron.monthly

@daily    10    example.daily   /bin/bash /home/aaronkilik/bin/backup.sh                                                                      

La siguiente es una comparación de cron y anacron para ayudarlo a comprender cuándo usar cualquiera de ellos.

La principal diferencia entre cron y anacron es que cron funciona de manera efectiva en máquinas que se ejecutarán continuamente, mientras que anacron está diseñado para máquinas que se apagarán en un día o una semana.

Si conoce alguna otra forma, compártala con nosotros utilizando el formulario de comentarios a continuación.