jeudi 13 mai 2010

Anacron pour les nuls


Anacron est un planificateur de tâches pour les système Unix/Linux

A quoi ça sert ?
Pour permettre l'exécution automatisée de tâches de maintenance, les serveurs unix utilisent le programme « crontab ». Ces tâches sont généralement planifiées à un horaire ou la charge système est faible (de préférence pendant la nuit) : suppression de fichiers inutilisés, archivage de journaux, indexation de fichiers, sauvegardes, etc.
L'inconvénient du programme « crontab » c'est que si le système est éteint à l'horaire défini, il n'y aura pas d'exécution de la tâche programmée.
Avec l'apparition et la démocratisation des distributions Linux pour le commun des mortels, il devient rare de laisser son PC allumé la nuit pour permettre à « crontab » de nous maintenir notre système... Pourtant, Linux nécessite l'exécution de tâches de maintenance.
Le programme « anacron » permet l'exécution de tâches planifiées sans nécessité de laisser la machine allumée 24h/24. Son créateur s'appelle Christian Schwarz.

Principes
Le programme « anacron » n'est pas du tout destiné à remplacer « crontab », il est complémentaire et il coexiste avec lui...
« anacron » utilise des indications de temps relatives (« une fois par jour / par semaine / par mois ») au lieu de références temporelles absolues (« le 14 janvier 2008 à 15h 30 »). De la sorte, même si vous « manquez » un moment ou une date particulière où l'exécution d'un « job » était prévue, celui-ci sera tout de même exécuté peu de temps après le prochain démarrage du système.

Fonctionnement
Le programme anacron est normalement installé de base sur les distributions actuelles. Pour le vérifier, en root, taper la commande suivante :
[root@localhost ~]# anacron -V
La réponse devrait être :
Anacron
Copyright (C) 1998  Itai Tzur
Copyright (C) 1999  Sean 'Shaleh' Perry
Copyright (C) 2004  Pascal Hakim

Mail comments, suggestions and bug reports to .

Sur un système fonctionnant en permanence, anacron peut être lancé par « crontab » à un horaire défini.
Sur un système ne tournant pas en permanence, « anacron » est lancé au démarrage car configuré en tant que service (On le retrouve donc dans /etc/init.d)
« anacron » recherche les « fichiers dateurs » (anglais timestamps) correspondant à ses différents jobs dans /var/spool/anacron
Si, d'après un des fichiers dateurs, un job est en attente, anacron » le lance
« anacron » met à jour le fichier dateur du job en question.
Une fois son travail terminé, anacron » s'arrête en attendant la prochaine sollicitation. Il n'y a pas de process anacron » consommant de la mémoire.

La configuration du programme est contrôlée par le fichier /etc/anacrontab.
Inspectez-le en tapant :
[root@localhost ~]# cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron

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

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
START_HOURS_RANGE=6-22

#period in days delay in minutes job-identifier command
1 5 cron.daily nice -n 19 run-parts /etc/cron.daily
7 25 cron.weekly nice -n 19 run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice -n 19 run-parts /etc/cron.monthly

La variable START_HOURS_RANGE permet de spécifier le créneau horaire ou anacron peut exécuter ses tâches programmées.
La variable RANDOM_DELAY permet de définir un report aléatoire en minutes du démarrage des tâches. La valeur 45 indique que le démarrage de la première tâche pourra se faire aléatoirement entre 0 et 45 minute après qu'anacron ait été démarré.
Chaque ligne du fichier de configuration correspond à une tâche selon le schéma suivant :
intervalle   délai   étiquette   commande
  • 1ère colonne, intervalle : exprimé en jours, indique l'intervalle de temps entre 2 exécution d'une tâche.
  • 2ème colonne, délai : exprimé en minutes, c'est le délai entre 2 tâches exécutées par anacron, pour éviter qu'elles ne s'exécutent en même temps.
  • 3ème colonne, étiquette : commentaire ajouté pour les logs de anacron
  • 4ème colonne, commande : tâche à exécuter
Pour chaque tâche, Anacron détermine si la tâche a été exécutée dans la période spécifiée dans le champ period du fichier de configuration. Si ce n'est pas le cas, Anacron exécute la commande.

Options de lancement
-f: Force l'exécution des tâches, en ignorant les fichiers dateurs.
-u: Met à jour à la date courante les fichiers dateurs des tâches, mais ne lance rien.
-s: Met en série l'exécution des tâches. Anacron ne lancera pas une nouvelle tâche avant que la précédente ne soit terminée.
-n: Lance les tâches tout de suite. Ignore les définitions de délai dans le fichier /etc/anacrontab Cette option implique -s.
-d: N'exécute pas en arrière-plan. Dans ce mode, Anacron enverra les messages d'information vers la sortie d'erreurs, ainsi qu'à syslog. La sortie des tâches est envoyée via un message comme d'habitude.
-q: Supprime les messages destinés à la sortie d'erreurs. Applicable seulement avec -d.
-t anacrontab: Utilise le fichier désigné anacrontab, à la place de celui par défaut.
-V: Affiche l'information de version, puis s'arrête.
-h: Affiche un court message d'utilisation, puis s'arrête.

Exemple : pour demander à anacron de lancer uniquement la commande echo "Bonjour" tous les 2 jours, cinq minutes après son démarrage, et seulement entre 12h et 20h, configurer le fichier /etc/anacrontab ainsi :

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
RANDOM_DELAY=0
START_HOURS_RANGE=12-20
2    5    Test    /bin/echo "Bonjour"

Lancer ensuite la commande suivante en root :
[root@localhost ~]# /usr/sbin/anacron -d

Bon à savoir :
  • Anacron n'est pas lancé si l'ordinateur que vous utilisez n'est pas sur secteur. Ainsi, il n'entraîne pas de consommation supplémentaire pour un portable.
  • Les logs anacron se trouvent dans /var/log/syslog
  • Anacron, comme crontab semblent devoir être remplacés par fcron, plus souple et remplissant les fonctions des deux logiciels

1 commentaire:

  1. Article trés interessant.
    c'est trés instructif .pour moi c'était un complemet détaillant même pour mon cours .

    merci beaucoup

    RépondreSupprimer