web-dev-qa-db-fra.com

Confus au sujet de la relation entre cron et anacron

J'ai cherché sur Google en vain une explication générale sur la manière dont cron et anacron travaillent ensemble. Les pages de manuel sont un peu trop profondes pour moi à ce stade.

Je suis confus parce que j'ajoute des tâches à crontab, et cela fonctionne, mais lorsque je les supprime hors de crontab, elles fonctionnent toujours sous anacron. Je vois les tâches dans /etc/cron.daily, mais je ne sais pas comment elles sont arrivées là-bas. cron fonctionne toujours sur mon système, mais pas anacron. En fait, je vois que Anacron est lancé par Cron!

En gros, j'aimerais une introduction au niveau utilisateur sur la façon d'ajouter et de supprimer des tâches, car les réponses faciles à parcourir qui vous indiquent de modifier clairement crontab ne sont pas complètes. Un lien vers un tutoriel serait bien.

12
Organic Marble

cron et anacron sont des démons pouvant planifier l'exécution de tâches récurrentes jusqu'à un certain moment défini par l'utilisateur.

La principale différence entre cron et anacron réside dans le fait que l'ancien suppose que le système fonctionne en permanence. Si votre système est hors tension et qu'un travail est planifié pendant cette période, le travail n'est jamais exécuté.

De plus, anacron est "anachronique" et est conçu pour les systèmes ne fonctionnant pas 24x7. Pour que cela fonctionne, anacron utilise des fichiers horodatés pour savoir quand ses dernières commandes ont été exécutées. Il conserve également un fichier /etc/anacrontab, comme le fait cron. De plus, cron.daily exécute anacron tous les jours. Par conséquent, anacron ne peut exécuter un travail qu'une fois par jour, mais cron peut être exécuté aussi souvent que toutes les minutes.

De man anacrontab:

Une fois exécuté, Anacron lit une liste de tâches dans un fichier de configuration, généralement/etc/anacrontab (voir anacrontab (5)). Ce fichier contient la liste des tâches contrôlées par Anacron. Chaque entrée de travail spécifie une période en jours, un délai en minutes, un identificateur de travail unique et une commande Shell.

Pour chaque travail, Anacron vérifie si ce travail a été exécuté au cours des n derniers jours, n étant la période spécifiée pour ce travail. Sinon, Anacron exécute la commande Shell du travail après avoir attendu le nombre de minutes spécifié comme paramètre de délai.

Une fois la commande terminée, Anacron enregistre la date dans un fichier d'horodatage spécial pour ce travail, afin de savoir quand l'exécuter à nouveau. Seule la date est utilisée pour les calculs de l'heure. L'heure n'est pas utilisée.

Cela signifie que si une tâche doit être exécutée quotidiennement et que l'ordinateur a été éteint à ce moment-là, l'anacron étant exécuté, il peut voir que la tâche a été exécutée pour la dernière fois il y a plus de 24 heures et être exécuté correctement.

Par exemple, si vous spécifiez les éléments suivants dans /etc/anacrontab:

7       15      test.daily      /bin/sh /home/username/script.sh

et le jour où le travail script.sh est censé être exécuté, si le système n'est pas en cours d'exécution, anacron exécute le script.sh 15 minutes après la réinitialisation du système.

Peu de références:

14
Ron