Anacron est un service qui s'exécute après chaque redémarrage du système, vérifiant les cron et les tâches planifiées qui devaient s'exécuter pendant que le système était en panne et, par conséquent, n'ont pas encore été exécutés. Il scanne le /etc/cron.hourly/anacron fichier pour trois facteurs afin de déterminer s'il faut exécuter ces travaux manqués. Les trois facteurs sont la présence du fichier /var/spool/anacron/cron.daily, le temps écoulé de 24 heures depuis la dernière exécution d'anacron et la présence de l'alimentation CA du système. Si les trois facteurs sont affirmatifs, anacron continue et exécute automatiquement les scripts situés dans /etc/cron.daily , /etc/cron.weekly , et /etc/cron.monthly répertoires, en fonction des paramètres et des conditions définis dans le fichier de configuration principal d'anacron /etc/anacrontab. Le contenu par défaut du fichier /etc/anacrontab est affiché ci-dessous :
$ cat /etc/anacrontab SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root RANDOM_DELAY=45 START_HOURS_RANGE=3-22 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
Ce fichier a cinq variables d'environnement définies :le SHELL et CHEMIN les variables définissent le shell et le chemin à utiliser pour exécuter les scripts (définis au bas de ce fichier) ; MAILTO définit le nom d'utilisateur ou un e-mail auquel sont envoyés les messages de sortie et d'erreur ; RANDOM_DELAY exprime le délai aléatoire maximum en minutes (ajouté au délai de base des travaux tel que défini dans la deuxième colonne des trois dernières lignes), et START_HOURS_RANGE indique la plage d'heures à laquelle les travaux pourraient commencer.
Les trois dernières lignes, dans l'exemple de sortie ci-dessus, définissent la planification et les scripts à exécuter. La première colonne représente la période en jours (ou @daily, @weekly, @monthly ou @yearly) qu'anacron utilise pour vérifier si la tâche spécifiée a été exécutée pendant ce nombre de jours ou cette période, la seconde spécifie le délai en minutes pour anacron d'attendre avant d'exécuter la tâche, la troisième identifie un identifiant de tâche et la quatrième colonne spécifie la commande à utiliser pour exécuter le contenu de /etc/cron.daily, /etc/cron.weekly et /etc/cron .fichiers mensuels. Ici, la commande run-parts est utilisée pour exécuter tous les fichiers sous les trois emplacements de répertoire avec la précision par défaut.
Pour chaque tâche, anacron vérifie si la tâche a été exécutée précédemment dans les jours ou la période spécifiés (colonne 1) et l'exécute après avoir attendu le nombre de minutes (colonne 2) si ce n'était pas le cas. Anacron peut être exécuté manuellement à l'invite de commande. Par exemple, pour exécuter toutes les tâches planifiées dans le fichier /etc/anacrontab mais qui ont été manquées, vous pouvez lancer la commande suivante :
# anacron
Anacron stocke sa date d'exécution dans les fichiers situés dans le répertoire /var/spool/anacron pour chaque planification définie.