Confundido sobre la relación entre cron y anacron

19

He estado buscando en vano en Google para encontrar una explicación general de cómo cron y anacron trabajan juntos. Las páginas del manual son demasiado profundas para mí en este momento.

Me confundo porque agrego tareas a crontab, y eso funciona, pero cuando las elimino de crontab, todavía se ejecutan bajo anacron. Veo las tareas en /etc/cron.daily, pero no estoy seguro de cómo llegaron allí. cron siempre se ejecuta en mi sistema, pero no anacron. De hecho, ¡veo que cron comienza a anacron!

Básicamente, me gustaría una introducción a nivel de usuario sobre cómo agregar y eliminar tareas, ya que las respuestas fácilmente googleables que le dicen que edite crontab claramente no están completas. Un enlace a un tutorial estaría bien.

Mármol orgánico
fuente

Respuestas:

19

Ambos crony anacronson demonios que pueden programar la ejecución de tareas recurrentes en un determinado momento definido por el usuario.

La principal diferencia entre crony anacrones 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, anacrones "anacrónico" y está diseñado para sistemas que no funcionan 24x7. Para que funcione, anacronutiliza archivos con marca de tiempo para averiguar cuándo fue la última vez que se ejecutaron sus comandos. También mantiene un archivo /etc/anacrontabal igual que lo cronhace. Además, cron.dailycorre anacron todos los días. Por lo tanto, anacronsolo puede ejecutar un trabajo una vez al día, pero cronpuede 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.shse supone que se ejecuta el trabajo, si el sistema no se está ejecutando, anacronse ejecutará script.sh15 minutos después de que el sistema vuelva a funcionar.

Poca referencia:

Ron
fuente
Gracias, ese tutorial de Digital Ocean es particularmente bueno, como a menudo lo son. No estoy seguro de cómo me lo perdí, así que aprecio el enlace.
Mármol orgánico
Gracias. Por "cron.daily ejecuta anacron cada hora", ¿en cambio, hombre "cron.daily ejecuta anacron diariamente"?
Tim
Gracias por esto. - He eliminado anacronde 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). Mis crontabentradas (diarias, semanales, ...) ahora se ejecutan a la hora esperada.
Adambean