Anacron est un planificateur de tâches périodiques à destination des machines qui ne fonctionnent pas de manière continue, telles que les ordinateurs de bureau et les PC portables.
A chaque démarrage, anacron lance les tâches dont la périodicité a été atteinte ou dépassée.
Installer le paquet anacron
# aptitude install anacron
Chaque tâche à lancer se présente dans le fichier /etc/anacrontab sous la forme d'une ligne comprenant 4 champs séparés par un ou plusieurs espaces
Premier champ : la périodicité sous la forme
soit d'un nombre correspondant au nombre de jours de la période, par exemple 1 pour une fois par jour, 7 pour une fois par semaine
soit du mot @month, signifiant une fois par mois (quelque soit le nombre de jours du mois)
Deuxième champ : le nombre de minutes d'attente avant de lancer une tâche dont la période est écoulée, ceci permet de différer et d'étaler le lancement des commandes
Troisième champ : un identifiant sous la forme d'un texte ne comprenant ni blanc ni /
Quatrième champ : la tâche à exécuter sous la forme d'une commande shell
Les exemples suivants sont tirés du fichier /etc/anacrontab initial :
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
Les commandes run-parts lancent les scripts "systèmes" installés dans les répertoires respectifs /etc/cron.daily /etc/cron.weekly et /etc/cron.monthly.
anacron peut-être utilisé, par exemple, pour exécuter des mises à jour périodiques, par exemple,
updatedb : 1 par semaine avec un temps d'attente de 12 minutes
update-command-not-found : 1 par semaine etc ....
update-apt-xapian-index
update-pepperflashplugin-nonfree
apt-file update
Pour cela, ajouter dans /etc/anacrontab, les lignes suivantes :
7 12 updatedb.weekly updatedb"
7 20 command-not-found.weekly update-command-not-found"
7 25 apt-xapian-index.weekly update-apt-xapian-index"
7 30 pepperflash.weekly update-pepperflashplugin-nonfree --install"
7 35 apt-file.weeky apt-file update"
Certaines commandes font partie de la configuration de base de cron (updatedb, update-apt-xapian-index) et seront donc lancées par anacron par l'intermédiaire de cron.daily, cron.weekly, cron.monthly. Elles peuvent ne pas être ajoutées dans anacron.
Lorsque anacron rencontre pour la première fois une tâche, il crée dans le répertoire /var/spool/anacron un fichier du nom de l'identifiant de tâche donné dans le champ 3 de la ligne correspondante. Ce fichier initialement vide, contient ensuite la dernière date de lancement.
# rm /var/spool/anacron/*
# anacron -f
# ls -l /var/spool/anacron/
total 0
-rw------- 1 root root 0 juin 2 22:38 apt-file.weekly
-rw------- 1 root root 0 juin 2 22:38 apt-xapian-index.weekly
-rw------- 1 root root 0 juin 2 22:38 command-not-found.weekly
-rw------- 1 root root 0 juin 2 22:38 cron.daily
-rw------- 1 root root 0 juin 2 22:38 cron.monthly
-rw------- 1 root root 0 juin 2 22:38 cron.weekly
-rw------- 1 root root 0 juin 2 22:38 pepperflash.weekly
-rw------- 1 root root 0 juin 2 22:38 updatedb.weekly
Aucune tâche n'ayant encore été lancée, du fait des temps d'attente, les fichiers sont vides.
# ls -l /var/spool/anacron/
total 20
-rw------- 1 root root 0 juin 2 22:38 apt-file.weekly
-rw------- 1 root root 0 juin 2 22:38 apt-xapian-index.weekly
-rw------- 1 root root 0 juin 2 22:38 command-not-found.weekly
-rw------- 1 root root 9 juin 2 22:43 cron.daily
-rw------- 1 root root 9 juin 2 22:53 cron.monthly
-rw------- 1 root root 9 juin 2 22:48 cron.weekly
-rw------- 1 root root 0 juin 2 22:38 pepperflash.weekly
-rw------- 1 root root 9 juin 2 22:50 updatedb.weekly
Les fichiers modifiés contiennent la date du jour, par exemple :
# cat /var/spool/anacron/updatedb.weekly
20160602
Pour vérifier le bon fonctionnement de anacron, on peut demander à anacron d'émettre un courriel par jour, par semaine et par mois,lorsque le système est mis en marche et que les conditions sont réunies. Il est nécessaire de disposer d'un agent de transfert de mail (voir exim). Pour cela ajouter dans anacron.tab, les lignes suivantes :
1 1 test.daily echo "anacron test.daily" |mail -s "anacron test daily" mon_adresse@mon_hébergeur.org
7 1 test.weekly echo "anacron test.weekly" |mail -s "anacron test weekly" mon_adresse@mon_hébergeur.org
@monthly 1 test.monthly echo "anacron test.monthly" |mail -s "anacron test monthly" mon_adresse@mon_hébergeur.org