Confus au sujet de la relation entre cron et anacron

19

J'ai cherché sur Google en vain pour trouver une explication générale sur la façon dont le cron et l'anacron fonctionnent 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 quand je les supprime de crontab, elles s'exécutent toujours sous anacron. Je vois les tâches dans /etc/cron.daily, mais je ne sais pas comment elles y sont arrivées. cron fonctionne toujours sur mon système, mais pas anacron. En fait, je vois que anacron est démarré 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 facilement googleables qui vous disent de modifier crontab ne sont clairement pas complètes. Un lien vers un tutoriel serait bien.

Marbre organique
la source

Réponses:

19

Les deux cronet anacronsont des démons qui peuvent planifier l'exécution de tâches récurrentes à un certain moment défini par l'utilisateur.

La principale différence entre cronet anacronest que le premier suppose que le système fonctionne en continu. Si votre système est hors tension et que vous avez planifié un travail pendant cette période, le travail n'est jamais exécuté.

D'un autre côté, il anacronest «anachronique» et est conçu pour les systèmes qui ne fonctionnent pas 24h / 24 et 7j / 7. Pour que cela fonctionne, il anacronutilise des fichiers horodatés pour savoir quand la dernière fois ses commandes ont été exécutées. Il conserve également un fichier /etc/anacrontabcomme il le cronfait. De plus, cron.dailyfonctionne anacron tous les jours. Par conséquent, anacronne peut exécuter un travail qu'une fois par jour, mais cronpeut s'exécuter aussi souvent que toutes les minutes.

De man anacrontab:

Une fois exécuté, Anacron lit une liste de travaux à partir d'un fichier de configuration, normalement / etc / anacrontab (voir anacrontab (5)). Ce fichier contient la liste des travaux contrôlés par Anacron. Chaque entrée de travail spécifie une période en jours, un délai en minutes, un identifiant 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, où n est 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 qu'il puisse savoir quand l'exécuter à nouveau. Seule la date est utilisée pour les calculs d'heure. L'heure n'est pas utilisée.

Cela signifie que si une tâche est planifiée pour être exécutée quotidiennement et que l'ordinateur a été éteint pendant cette période, lorsque anacron est 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 exécuter la tâche 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 script.shtravail est censé être exécuté, si le système n'est pas en cours d'exécution, anacronil s'exécutera dans les script.sh15 minutes suivant le redémarrage du système.

Peu de référence:

Ron
la source
Merci, ce tutoriel Digital Ocean est particulièrement bon, comme ils le sont souvent. Je ne sais pas comment je l'ai raté, donc j'apprécie le lien.
Marbre organique
Merci. Par "cron.daily exécute anacron toutes les heures", est-ce que vous croyez "cron.daily exécute anacron quotidiennement"?
Tim
Merci pour cela. - J'ai supprimé anacrontous mes VPS car ce sont des systèmes toujours actifs. (Je ne sais pas comment il y est arrivé en premier lieu, je n'en avais pas entendu parler.) Mes crontabentrées (quotidiennes, hebdomadaires, ...) fonctionnent toutes aux heures prévues.
Adambean