{{tag>Focal Bionic Xenial sauvegarde synchronisation}}
----
====== Anacron ======
Anacron est utilisé pour exécuter des commandes, scripts ou programmes périodiquement, avec une fréquence spécifiée en jours.\\
===== Différence avec Cron =====
Cron est plutôt utilisé pour des machines à fonctionnement permanent (comme les serveurs).\\
[[Anacron]] est plutôt utilisé pour des machines à fonctionnement discontinu (comme les PC).
Cron a plus d'options qu'Anacron. Comme ce dernier, il peut lancer une tâche à un intervalle déterminé : par exemple chaque 5e jour de la semaine, chaque heure, ou chaque mois. Contrairement à Anacron, il peut aussi lancer une tâche à un moment pré-déterminé (« le 14 janvier 2018 à 15h 30 »). Limite par rapport à Anacron : si la machine n'est pas allumée, la tâche n'est pas lancée, et ne le sera jamais, même après le re-démarrage. __Elle est perdue__. Les prochaines seront évidement lancées, si la machine est allumée.
[[Anacron]] n'utilise que des indications de temps relatives (« une fois par jour / par semaine / par mois »). Autre différence d'avec Cron, si vous avez demandé une tâche toute les semaines, et que votre PC est démarré seulement au bout de 10 jours, Anacron constatera le retard, et lancera donc la tâche juste après le démarrage de votre PC.
Les 2 logiciels peuvent être utilisés sur un PC régulièrement éteint, mais Anacron a le gros avantage de lancer tous les traitements en retard à chaque allumage du PC, même si ceux-ci sont peu nombreux. Avec Cron, des allumages PC trop intermittents risquent d'annuler une grande partie des traitements programmés.
La syntaxe d'anacron est plus simple que celle de cron.
===== Principe =====
Anacron exécute la liste des tâches présentes dans le fichier de configuration /etc/anacrontab configuration. Chaque ligne de ce fichier spécifie une période //n// en jours, un délai //d// en minutes, un identifiant unique et une commande à exécuter.
Pour chaque tâche, anacron vérifie si elle a été exécutée au cours des //n// derniers jours. Si une tâche n'a pas été exécutée depuis //n// jours ou plus, anacron exécute la commande indiquée après //d// minutes. Après exécution, un horodatage dans un fichier spécial pour chaque tâche permet à Anacron de savoir quand il devra l'exécuter à nouveau.
Anacron est lancé au démarrage du PC, exécute ses tâches, puis se ferme. \\
Pour qu'il puisse continuer à fonctionner, il faut qu'il soit relancé à intervalles réguliers. Il est donc installé avec un une tâche cron (voir /etc/cron.d/anacron) qui le lance toutes les heures de 7h30à 20h30. À l'heure actuelle cette planification est de fait assurée par un service et un « //timer// » systemd (voir systemctl cat anacron.timer).
===== Pré-requis =====
* Disposer des [[:sudo|droits d'administration]].
===== Installation =====
Le programme **anacron** est normalement installé par défaut sur Ubuntu en version « desktop ». Si ce n'est pas le cas, il suffit d'[[:tutoriel/comment_installer_un_paquet|installer le paquet]] **[[apt>anacron]]**
===== Fonctionnement simple=====
Avec les [[:sudo|droits d'administration]], ouvrir le fichier **/etc/anacrontab** :
sudo nano /etc/anacrontab
ou
gedit admin:///etc/anacrontab
(selon votre éditeur de texte favoris).
Ajouter à la fin du fichier votre tâche planifiée, en respectant la syntaxe
intervalle délai identifiant commande
où **intervalle** = nombre de jours entre les lancements ;
où **délai** = nombre de minutes à attendre avent l’exécution de la tâche ;
où **identifiant** = un nom unique de votre choix (sans espace ni barre oblique) ;
où **commande** = une commande [[bash|bash]], le nom d'un programme, d'un script, etc. les espaces vides sont autorisés.
__Exemple__ :
1 15 sauvegarde rsync -avz /home/vous/Documents/ root@192.168.0.101:/home/
Avec cette ligne la sauvegarde [[rsync]] est lancée tous les jours (intervalle = 1 jour), si l’ordinateur est allumé. Elle sera exécutée 15 minutes après le lancement d'Anacron. Par exemple à 7h45 si l'ordinateur était allumé à 7h30, à 11h45 s'il n’était pas allumé avant 11h30 et ainsi de suite (rappel : Anacron est lancé automatiquement toutes les heures de 7h30 à 23h30).
===== Fonctionnement détaillé=====
Le fonctionnement d'anacron est contrôlé par le fichier **/etc/anacrontab**.
Vous pouvez l'examiner⋅: cat /etc/anacrontab
Vous pouvez le modifier en tant que root :
sudo nano /etc/anacrontab
Voici le contenu par défaut du fichier **/etc/anacrontab** (sur une [[jammy|jammy 22.04]]). Il vaut mieux ne pas modifier ces lignes mais vous pouvez en ajouter d'autres en dessous..
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
HOME=/root # /etc/anacrontab: configuration file for anacron
# These replace cron's entries
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
Vous pouvez remarquer que la première ligne va lancer quotidiennement les tâches cron placées sous /etc/cron.daily.\\ Grâce à Anacron on est sûr que ces tâches seront exécutées une fois dans la journée même si la machine était éteinte à l'heure où elle avaient été définies pour cron.\\
La seconde ligne est analogue pour les tâches hebdomadaires de cron.
==== Options de lancement ====
Normalement vous n'avez besoin d'aucune option : **anacron** se lance tout seul. Il existe cependant certains options, que vous pouvez appeler pour un fonctionnement adapté à votre besoin.
Pour ce faire, tapez **anacron**, suivi d'une option (par exemple **anacron -T**) :
**-f** : Force l'exécution immédiate des tâches, en ignorant les fichiers dateurs.\\
**-u** : Met à jour à la date courante dans 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 anacrontab défini, à la place de celui par défaut. Par exemple : **anacron -t ~/.anacron/etc/anacrontab**\\
**-V** : Affiche l'information de version, puis s'arrête.\\
**-h** : Affiche un court message d'utilisation, puis s'arrête.\\
**-T** : Test la syntaxe de votre anacrontab, et indique les erreurs.\\
===== Bon à savoir =====
anacron n'est pas lancé si l'ordinateur que vous utilisez n'est pas branché sur secteur. Ainsi, il n'entraîne pas de consommation supplémentaire pour un portable.
===== Liens =====
* [[:cron]] : planifier/programmer des tâches
* [[incron]] : effectuer une action, commande(s), scripts, etc, en cas de modifications de fichiers ou de répertoires donnés
* [[fcron]] : programmer des tâches devant être exécutées
Auteurs : [[utilisateurs/sylvainsjc]] - [[utilisateurs/christophe c]]
Contributeurs :