Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
anacron [Le 02/02/2020, 18:48]
Theon [Fonctionnement simple] ortho
anacron [Le 15/05/2025, 15:01] (Version actuelle)
141.227.26.230 [Fonctionnement simple] ortho
Ligne 1: Ligne 1:
-{{tag>​Bionic Xenial sauvegarde synchronisation}}+{{tag>Focal Bionic Xenial sauvegarde synchronisation}}
 ---- ----
 +====== Anacron ======
  
-Anacron ​sert à lancer __automatiquement__ ​des tâches informatiques (sauvegardes ​ou autres) à des intervalles prédéfinis (tout comme [[cron|cron]]).+Anacron ​est utilisé pour exécuter ​des commandes, scripts ​ou programmes périodiquement,​ avec une fréquence spécifiée en jours.\\
  
-  - [[Cron]] est utilisé pour des machines à fonctionnement permanent (plutôt des serveurs).  +===== Différence avec Cron ===== 
-  ​- ​**Anacron** est utilisé pour des machines à fonctionnement discontinu (plutôt des PC).+[[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).
  
-En effet[[cron|cron]] lance une tâche à un moment pré-déterminé (« le 14 janvier 2018 à 15h 30 »). 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__.+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 à Anacronil 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 utilise ​au contraire ​des indications de temps relatives (« une fois par jour / par semaine / par mois »). Si vous avez demandé une tâche toute les semaines, et que votre PC est démarré seulement au bout de 10 jouranacron ​constatera le retard, et lancera donc la tâche juste après le démarrage de votre PC.+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 joursAnacron ​constatera le retard, et lancera donc la tâche juste après le démarrage de votre PC.
  
-**Anacron** démarre automatiquement ​à chaque ​lancement ​d'Ubuntu (vous n'avez rien à définir à ce niveau), vérifie si une ou des tâches sont à lancerles démarre, puis se désactive jusqu'​au prochain démarrage de votre système OU jusqu'​à ​7h30 le matin suivant (c'​est ​d'​ailleurs cron qui redémarre anacron ​à 7h30 - c'​est ​du moins le paramétrage sur Ubuntu)Bien que anacron ​soit plutôt prévu pour les PCon peut donc l'utiliser sur des serveurs Ubuntu. L'​inverse ​(cron sur PCest moins évident.+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 ces derniers 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**. Chaque ligne de ce fichier spécifie une période //n// en joursun 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 PCexécute ses tâches, puis se ferme. \\ 
 + 
 +__Note__ (vous n'avez rien à faire, ​c'​est ​juste pour une bonne compréhension) : Anacron se fermant après exécution, il doit être relancé ​à intervalles réguliers. Il l'​est ​par une tâche [[cron|cron]] (voir **/etc/cron.d/anacron**) qui le lance toutes ​les heuresde 7h30 à 23h30. À l'heure actuelle, cette planification est de fait assurée par un service et un « //timer// » systemd ​(voir **systemctl cat anacron.timer**).
  
-Le créateur d'​anacron s'​appelle Christian Schwarz. Le logiciel a depuis été totalement réécrit en [[https://​fr.wikipedia.org/​wiki/​C_(langage)|langage C]] par Itai Tzur. 
 ===== Pré-requis ===== ===== Pré-requis =====
   * Disposer des [[:​sudo|droits d'​administration]].   * Disposer des [[:​sudo|droits d'​administration]].
  
 ===== Installation ===== ===== Installation =====
-Le programme **anacron** est normalement installé ​de base sur Ubuntu. Si ce n'est pas le cas, il suffit d'​[[:​tutoriel/​comment_installer_un_paquet|installer le paquet]] **[[apt>​anacron]]**+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===== ===== Fonctionnement simple=====
 Avec les [[:​sudo|droits d'​administration]],​ ouvrir le fichier **/​etc/​anacrontab** :  Avec les [[:​sudo|droits d'​administration]],​ ouvrir le fichier **/​etc/​anacrontab** : 
  
-<​code>​sudo ​mousepad ​/​etc/​anacrontab</​code>​ ou <​code>​sudo gedit /​etc/​anacrontab</​code>​ (selon votre éditeur de texte favoris).+<​code>​sudo ​nano /​etc/​anacrontab</​code>​ ou  
 +<​code>​gedit ​admin:///​etc/​anacrontab</​code>​ (selon votre éditeur de texte favoris).
  
-Ajouter à la fin du fichier votre automatisationau format ​ +Ajouter à la fin du fichier votre tâche planifiéeen respectant la syntaxe 
-<​file>​intervalle ​  ​délai ​  étiquette ​  commande</​file>​ +<​file>​intervalle ​  ​délai ​  identifiant ​  commande</​file>​ 
-où **intervalle** = nombre de jour entre les lancements.+où **intervalle** = nombre de jours entre les lancements. On peut utiliser **@monthly** pour lancer une tâche mensuelle. 
 +Par contre, @daily et @weekly ne sont plus supportés ((et retournent l’erreur //Unknown named period//, cf. https://​askubuntu.com/​a/​511347/​385361)). Pour un lancement chaque jour, mettre simplement //1//, et //7// pour un lancement hebdomadaire
  
-où **délai** = nombre de minutes ​entre le démarrage du PC et le lancement ​de la tâche ​: pour ne pas ralentir le démarrage PC, pour ne pas lancer plusieurs tâches en même temps (à ce titre, vérifiez qu'une tâche déjà dans le fichier ne se lance pas au même nombre de minutes après le démarrage que la nouvelle).+où **délai** = nombre de minutes ​ à attendre avant l’exécution ​de la tâche ​;
  
-où **étiquette** = nom de la tâche ​(choisit par vous). Attention, __jamais__ d'​espace vide ou de slash.+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 .... les espaces vides sont autorisés.+où **commande** = une commande [[bash|bash]],​ le nom d'un programme, d'un script, etcLes espaces vides sont autorisés.
  
 __Exemple__ : __Exemple__ :
-<​file> ​  ​1 15 sauvegarde rsync -avz /​home/​vous/​Documents/​ root@192.168.0.101:/​home/</​file>​ +<​file>​1    15   ​sauvegarde rsync -avz /​home/​vous/​Documents/​ root@192.168.0.101:/​home/</​file>​
-=> La sauvegarde [[rsync]] est lancée chaque jour (si le PC est allumé), 15 minutes après le démarrage du PC, pour sauvegarder le répertoire /Documents dans un répertoire se trouvant sur un serveur distant.+
  
-**Attentionc'est l'__utilisateur root__ qui lance anacronIl ne connait pas le répertoire par défaut de l'utilisateur courant, il faut donc (si besoin) le lui indiquer en clair. +Avec cette ligne la sauvegarde [[rsync]] est lancée tous les jours (intervalle = 1 jour)si l’ordinateur ​est allumé, vers un DD connecté à votre box. Cette sauvegarde sera exécutée 15 minutes après le lancement d'AnacronPar 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).
-De plus, l'​utilisateur __root ​n'​a ​pas d'​écran affecté__, on ne peut donc pas lancer ​et afficher par ce biais une application graphique.**+
  
-===== Fonctionnement détaillé=====+<note warning>​Après modification du fichier anacrontab, il est prudent de lancer <code bash>​anacron -T</​code>​ pour vérifier que la syntaxe est bonne</​note>​
  
-  * sur un système fonctionnant en permanence, c'est [[cron]] qui lance anacron à 7h30 chaque jour (voir le fichier /​etc/​cron.d/​anacron) +===== Fonctionnement détaillé=====
-  * sur un système ne tournant pas en permanence, anacron est lancé au démarrage car configuré en tant que service. +
-  * anacron recherche les « fichiers dateurs » (anglais timestamps) correspondant à ses différents lancements (jobs) dans /​var/​spool/​anacron. C'est dans ces fichiers que anacron sauvegarde les dates et heure de ses dernières automatisations. +
-     - si, d'​après un des fichiers dateurs, un job est en attente, anacron le lance +
-     - puis anacron met à jour le fichier dateur du job en question. Il se basera dessus pour connaître la date du prochain lancement.+
  
 Le fonctionnement d'​anacron est contrôlé par le fichier **/​etc/​anacrontab**. Le fonctionnement d'​anacron est contrôlé par le fichier **/​etc/​anacrontab**.
  
-Inspectez-le en saisissant ​: <​code>​cat /​etc/​anacrontab</​code>​+Vous pouvez l'​examiner⋅: <​code>​cat /​etc/​anacrontab</​code>​
  
-Modifiez ​le par un +Vous pouvez ​le modifier en tant que root 
-<​code>​sudo ​gedit /​etc/​anacrontab</​code+<​code>​sudo ​nano /​etc/​anacrontab</​code>​
-Chaque ligne du fichier de configuration correspond à une tâche selon le schéma suivant : +
-<​file>​intervalle ​  ​délai ​  ​étiquette ​  ​commande</​file>+
  
-  * 1ère colonne, intervalle : c'est le nombre de __jours__ entre 2 exécutions d'une même tâche. Vous pouvez remplacer le nombre de jours par **@monthly**,​ ce qui lancera la tâche au début de chaque mois. Peu importe alors le nombre de jours du mois (28, 29, 30 ou 31). 
-  * 2ème colonne, délai : c'est le nombre de __minutes__ 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 : nom que vous donnez à la tâche, pour les logs de anacron. __Ne doit pas comprendre d'​espace vide ou de slash__ !! 
-  * 4ème colonne, commande : tâche à exécuter (nom d'un script, commande bash, lancement d'un programme ...). Peut contenir des espaces vides. 
    
-Voici le contenu par défaut du fichier **/​etc/​anacrontab** (sur une [[bionic|Bionic 18.04]]). ​Ces lignes ​ne sont pas à modifier ​(elles sont utilisées pour générer des fichiers de log). On ajoute ​en-dessous ​sa ou ses commandes à automatiser.+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..
 <​file>​ <​file>​
-   # /​etc/​anacrontab:​ configuration file for anacron+# /​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
        
-   See anacron(8) and anacrontab(5) for details.+These replace cron's entries 
 +1             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 
 + 
 +   </​file>​
        
-   ​SHELL=/bin/sh +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.\\ 
-   PATH=/​usr/​local/​sbin:/​usr/​local/​bin:/​sbin:/​bin:/​usr/​sbin:/​usr/​bin +La seconde ligne est analogue pour les tâches hebdomadaires de cron.
-   ​HOME=/​root +
-   ​LOGNAME=root+
        
-   # These replace cron's entries 
-   ​1 5 cron.daily nice run-parts --report /​etc/​cron.daily 
-   ​7 10 cron.weekly nice run-parts --report /​etc/​cron.weekly 
-   ​@monthly 15 cron.monthly nice run-parts --report /​etc/​cron.monthly 
-   </​file>​ 
  
 ==== Options de lancement ==== ==== 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.
  
-**-f** : Force l'​exécution des tâches, en ignorant les fichiers dateurs.\\ +Pour ce faire, tapez **anacron**,​ suivi d'une option (par exemple **anacron -T**) : 
-**-u** : Met à jour à la date courante les fichiers dateurs des tâches, mais ne lance rien.\\+ 
 +**-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.\\ **-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.\\ **-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.\\ **-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.\\ **-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.\\+**-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.\\ **-V** : Affiche l'​information de version, puis s'​arrête.\\
 **-h** : Affiche un court message d'​utilisation,​ 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.\\
 +
 +==== Mots de passe ====
 +Si le programme que vous lancez nécessite normalement le mots de passe super-utilisateur,​ celui-ci ne vous sera pas demandé. Le programme s'​exécutera quand même, car c'est l'​utilisateur **root** (et non vous) qui lance le Anacron, et **root** n'a pas besoin de mot de passe. Ni de **sudo**, bien sur.
 +==== Affichage ====
 +L'​utilisateur **root** qui exécute Anacron n'a pas d'​écran dédié par défaut, donc le résultat du traitement ne s'​affiche pas à l'​écran. ​
 +
 +Si vous souhaitez avoir un retour sur les messages liés à l'​exécution,​ vous pouvez terminer le script lancé par Anacron avec une redirection vers un fichier texte. Par exemple, ajouter à la fin d'une commande **>> /​home/​moi/​controle.txt** enverra la ligne normalement affichée à l'​écran (après la commande) dans le fichier controle.txt. Cela vous permet de contrôler la bonne exécution de la commande. Bien sur, pour cela il faut que votre commande renvoi un message après son exécution, sinon il n'y aura rien (**moi** est à remplacer par votre véritable nom utilisateur).
  
 +On peut demander que Anacron soit lancé par le compte utilisateur si on souhaite un affichage écran. Comme décrit [[https://​askubuntu.com/​questions/​235089/​how-can-i-run-anacron-in-user-mode|ici]].
 ===== Bon à savoir ===== ===== Bon à savoir =====
 <​note>​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.</​note>​ <​note>​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.</​note>​
Ligne 101: Ligne 119:
   * [[fcron]] : programmer des tâches devant être exécutées   * [[fcron]] : programmer des tâches devant être exécutées
  
-Auteur ​: [[utilisateurs/​sylvainsjc]]+Auteurs ​: [[utilisateurs/​sylvainsjc]] - [[utilisateurs/​christophe c]]
  
-Contributeurs : +Contributeurs :
  • anacron.1580665736.txt.gz
  • Dernière modification: Le 02/02/2020, 18:48
  • par Theon