Ambos cron
y anacron
son demonios que pueden programar la ejecución de tareas recurrentes en un determinado momento definido por el usuario.
La principal diferencia entre cron
y anacron
es que el primero supone que el sistema se ejecuta continuamente. Si su sistema está apagado y tiene un trabajo programado durante este tiempo, el trabajo nunca se ejecuta.
Por otro lado, anacron
es "anacrónico" y está diseñado para sistemas que no funcionan 24x7. Para que funcione, anacron
utiliza archivos con marca de tiempo para averiguar cuándo fue la última vez que se ejecutaron sus comandos. También mantiene un archivo /etc/anacrontab
al igual que lo cron
hace. Además, cron.daily
corre anacron todos los días. Por lo tanto, anacron
solo puede ejecutar un trabajo una vez al día, pero cron
puede ejecutarse tan a menudo como cada minuto.
De man anacrontab
:
Cuando se ejecuta, Anacron lee una lista de trabajos de un archivo de configuración, normalmente / etc / anacrontab (ver anacrontab (5)). Este archivo contiene la lista de trabajos que controla Anacron. Cada entrada de trabajo especifica un período en días, un retraso en minutos, un identificador de trabajo único y un comando de shell.
Para cada trabajo, Anacron comprueba si este trabajo se ha ejecutado en los últimos n días, donde n es el período especificado para ese trabajo. De lo contrario, Anacron ejecuta el comando de shell del trabajo, después de esperar la cantidad de minutos especificada como parámetro de retraso.
Después de que se cierra 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. La hora no se usa.
Esto significa que si una tarea está programada para ejecutarse diariamente y la computadora se apagó durante ese tiempo, cuando se ejecuta anacron, puede ver que la tarea se ejecutó por última vez hace más de 24 horas y ejecutar la tarea correctamente.
Por ejemplo, si especifica lo siguiente en /etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
y el día en que script.sh
se supone que se ejecuta el trabajo, si el sistema no se está ejecutando, anacron
se ejecutará script.sh
15 minutos después de que el sistema vuelva a funcionar.
Poca referencia:
anacron
de todos mis VPS ya que son sistemas siempre activos. (No tengo idea de cómo llegó allí, en primer lugar, no había oído hablar de él). Miscrontab
entradas (diarias, semanales, ...) ahora se ejecutan a la hora esperada.