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
cron [Le 02/01/2025, 13:00]
141.227.26.230 [Distinction avec Anacron]
cron [Le 28/10/2025, 13:50] (Version actuelle)
141.227.26.230 [Choix de l'utilisateur Cron] maj
Ligne 8: Ligne 8:
 **Cron** est un programme pour exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiée précise, ou selon un cycle défini à l’avance. **Cron** est un programme pour exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiée précise, ou selon un cycle défini à l’avance.
  
-Chaque utilisateur a un fichier **crontab**, lui permettant d'​indiquer les actions à exécuter.\\+Chaque utilisateur a un fichier **Crontab**, lui permettant d'​indiquer les actions à exécuter.\\
 Cron est parfois appelé « planificateur de tâches » ou « gestionnaire de tâches planifiées ». Cron est parfois appelé « planificateur de tâches » ou « gestionnaire de tâches planifiées ».
  
Ligne 23: Ligne 23:
  
 La syntaxe de Cron est plus complexe que celle d'​Anacron. La syntaxe de Cron est plus complexe que celle d'​Anacron.
 +
 +===== Choix de l'​utilisateur Cron  =====
 +Il est important de définir clairement sous quel compte utilisateur est lancé **cron**. Ce peut-être vous (votre //user//), ou ce peut-être //root// (utilisateur qui a tous les droits).
 +
 +Pour des opérations demandant normalement un mot de passe, il faudra utiliser **cron //root//**. En effet, l'​utilisateur //root// peut **tout** faire sans mot de passe. **/!\ Soyez prudents avec ces scripts, ils peuvent tout faire, y compris casser votre système !!**
 +
 +Pour des opérations en espace utilisateur (dans votre /home/), donc sans mot de passe, utilisez le **cron** de votre compte utilisateur.
 +
 +Pour lancer le **cron //root//** : **sudo crontab -e**. Pour consulter ce cron sans l'​ouvrir : **sudo contrab -l**
 +
 +Pour lancer le cron de votre espace utilisateur : **crontab -e**. Pour consulter ce cron sans l'​ouvrir : **contrab -l**
 +
 +Les 2 fichiers **cron** sont indépendants,​ et peuvent cohabiter sans problème.
 +
 +Spécificité du cron //root//, il faut indiquer **root** (suivi d'un espace) devant la commande. Aucun utilisateur n'est à indiquer devant la commande du cron //user//.
 +
 ===== Comment fonctionne Cron  ===== ===== Comment fonctionne Cron  =====
  
 Les tâches planifiées cron sont définies au niveau du système dans le fichier /​etc/​crontab et dans le dossier /​etc/​cron.d/​\\ Les tâches planifiées cron sont définies au niveau du système dans le fichier /​etc/​crontab et dans le dossier /​etc/​cron.d/​\\
-Pour modifier vos tâches planifiées tapez : **crontab -e** (lance un éditeur du fichier crontab)\\ +Pour modifier vos tâches planifiées tapez : **crontab -e** ou **sudo ​crontab -e** (lance un éditeur du fichier crontab)\\
-Les tâches définies dans **crontab** sont par principe exécutées par //​[[root|root]]//​ (l'​utilisateur avec le maximum de droits), sans demande de mot de passe. Cela permet d'​exécuter potentiellement n'​importe quelle tâche système, d'où un certain risque : soyez prudent, et abstenez-vous si vous ne maîtrisez pas bien ce que vous faites.+
  
 Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l'​ordre__ (un champ qu'on ne souhaite pas renseigner doit être rempli avec une *) : Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l'​ordre__ (un champ qu'on ne souhaite pas renseigner doit être rempli avec une *) :
Ligne 36: Ligne 51:
     * //mois// de lancement (les mois se numérotent de 1 à 12, ou s'​énoncent par leur libellé abrégé anglais - jan ; feb ; mar ; apr ; ...)     * //mois// de lancement (les mois se numérotent de 1 à 12, ou s'​énoncent par leur libellé abrégé anglais - jan ; feb ; mar ; apr ; ...)
     * //jour de la semaine// de lancement (les jours se numérotent de 1 (lundi) à 7 (dimanche), ou s'​énoncent par leur libellé abrégé anglais - sun ; mon ; tue ; wed ; thu ; fri ; sat)     * //jour de la semaine// de lancement (les jours se numérotent de 1 (lundi) à 7 (dimanche), ou s'​énoncent par leur libellé abrégé anglais - sun ; mon ; tue ; wed ; thu ; fri ; sat)
-    * La commande à lancer.+    * La commande à lancer ​(précédée de '​root'​ en cas de crontab //root//.
  
 Récapitulatif des 5 premiers champs : Récapitulatif des 5 premiers champs :
Ligne 113: Ligne 128:
 Quand vous sortez de l'​éditeur,​ le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ///​var/​spool/​cron/​crontabs/<​user>//​ mais doit seulement être modifié par l'​intermédiaire de la commande **crontab**. Quand vous sortez de l'​éditeur,​ le nouveau fichier **crontab** sera installé. Le fichier est stocké dans ///​var/​spool/​cron/​crontabs/<​user>//​ mais doit seulement être modifié par l'​intermédiaire de la commande **crontab**.
  
-Note : sur xubuntu, il faut auparavant indiquer que l'​utilisateur a le droit d'​utiliser crontab. Pour cela il faut créer un fichier ///​etc/​cron.allow//​ et y saisir le nom des utilisateurs autorisés à utiliser crontab.+<note important>​Il ​faut auparavant indiquer que l'​utilisateur a le droit d'​utiliser crontab.\\ 
 +Pour cela il faut créer un fichier ​**///​etc/​cron.allow//​** et y saisir le nom des utilisateurs autorisés à utiliser crontab.</​note>​
  
 L'​éditeur utilisé pour modifier la crontab peut être modifié par la commande : L'​éditeur utilisé pour modifier la crontab peut être modifié par la commande :
Ligne 195: Ligne 211:
 Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer la tâche dans le **crontab** pour qu'​elle s'​exécute quelques minutes plus tard et contrôler le résultat, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile d'​envoyer les retours des commandes dans un fichier texte pour voir les succès ou les échecs, par exemple : Il est important de vérifier que vos travaux dans **cron** fonctionnent comme prévu. Une méthode pour faire un test est de paramétrer la tâche dans le **crontab** pour qu'​elle s'​exécute quelques minutes plus tard et contrôler le résultat, avant de mettre la synchronisation de cette tâche à la bonne heure. Vous pouvez également trouver utile d'​envoyer les retours des commandes dans un fichier texte pour voir les succès ou les échecs, par exemple :
  
-<​code>​+<​code ​bash>
 echo "​Sauvegarde de nuit: $(date)"​ >>/​tmp/​mybackup.log echo "​Sauvegarde de nuit: $(date)"​ >>/​tmp/​mybackup.log
 </​code>​ </​code>​
Ligne 201: Ligne 217:
 Une autre façon de contrôler la bonne exécution des tâches cron est d'​utiliser sa capacité à envoyer des courriels. Une autre façon de contrôler la bonne exécution des tâches cron est d'​utiliser sa capacité à envoyer des courriels.
 Pour cela il suffit de renseigner la variable MAILTO dans votre fichier crontab, exemple : Pour cela il suffit de renseigner la variable MAILTO dans votre fichier crontab, exemple :
-<​code>​MAILTO="​jean.dupont@example.com"</​code>​ +<​code ​bash>​MAILTO="​jean.dupont@example.com"</​code>​ 
-**Attention**, ​pour que cela fonctionne il faut que votre machine soit capable d'​envoyer des courriels. (voir par exemple : [[msmtp|MSMTP]] ou [[postfix_systeme_satellite|Système Satellite pour Postfix]], [[exim4-satellite|Système satellite pour exim4]])+<note important>​pour que cela fonctionne il faut que votre machine soit capable d'​envoyer des courriels. (voir par exemple : [[msmtp|MSMTP]] ou [[postfix_systeme_satellite|Système Satellite pour Postfix]], [[exim4-satellite|Système satellite pour exim4]])</​note>​\\ 
 +Au contraire, si vous ne voulez pas envoyer d’emails, ajouter simplement comme 1ère ligne utile <code bash>​MAILTO=""</​code>​
  
 Pour plus d'​informations,​ lisez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:​tutoriel:​console_ligne_de_commande|les commandes basiques]]). ​ Pour plus d'​informations,​ lisez les pages du //man// pour **cron** et **crontab** (le //man// est détaillé sur [[:​tutoriel:​console_ligne_de_commande|les commandes basiques]]). ​
  • cron.1735819241.txt.gz
  • Dernière modification: Le 02/01/2025, 13:00
  • par 141.227.26.230