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édentesRévision précédente
Prochaine révision
Révision précédente
cron [Le 31/10/2025, 09:09] – [Choix de l'utilisateur Cron] inutile 90.65.51.73cron [Le 07/01/2026, 14:05] (Version actuelle) – [Choix de l'utilisateur Cron] 141.227.26.230
Ligne 27: Ligne 27:
 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). 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 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 des opérations en espace utilisateur (dans votre /home/), donc sans mot de passe, utilisez le **cron** de votre compte utilisateur.
Ligne 40: Ligne 40:
 Pour modifier vos tâches planifiées tapez : **crontab -e** ou **sudo 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)\\
  
-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__ 
  
     * //minute// de lancement (les minutes se numérotent de 0 à 59)     * //minute// de lancement (les minutes se numérotent de 0 à 59)
Ligne 47: Ligne 47:
     * //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 (précédée de 'rooten cas de crontab //root//.+    * La commande à lancer
 +Un champ contenant une étoile ** * ** signifie '**tous**=> dans le champs 'mois', ** * ** signifie donc : 'a lancer chaque mois') :
  
 Récapitulatif des 5 premiers champs : Récapitulatif des 5 premiers champs :
Ligne 108: Ligne 109:
 https://crontab-generator.org https://crontab-generator.org
 http://www.cronmaker.com http://www.cronmaker.com
 +
 ===== Commandes pour gérer les tâches planifiées Cron ===== ===== Commandes pour gérer les tâches planifiées Cron =====
  
Ligne 117: Ligne 119:
  
 Pour modifier vos tâches planifiées tapez : Pour modifier vos tâches planifiées tapez :
- 
 <code bash>crontab -e</code> <code bash>crontab -e</code>
 +pour celles nécessitant normalement un mot de passe (qui dès lors ne sera pas demandé) :
 +<code bash>sudo crontab -e</code>
 et pour modifier celles d'un autre utilisateur : et pour modifier celles d'un autre utilisateur :
 <code bash>sudo crontab -e -u nom_utilisateur</code> <code bash>sudo crontab -e -u nom_utilisateur</code>
Ligne 137: Ligne 140:
  
 Certains environnements de bureau, comme KDE dans sa « Configuration du système », offrent une interface graphique pour gérer les tâches cron. Certains environnements de bureau, comme KDE dans sa « Configuration du système », offrent une interface graphique pour gérer les tâches cron.
- 
- 
  
 ===== Lancement graphique ===== ===== Lancement graphique =====
Ligne 152: Ligne 153:
  
 ===== Chemin des scripts, commandes à exécuter ou fichiers à utiliser ===== ===== Chemin des scripts, commandes à exécuter ou fichiers à utiliser =====
-Cron n'a pas de PATH par défaut. Il est donc __grandement conseillé__ de mettre le chemin absolu vers les exécutables et fichiers. Exemple : +Une tâche cron est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d'environnement habituelles et en particulier **PATH** ne sont pas connues. Cron n'donc pas de PATH par défaut.
-<code> +
-#!/bin/bash+
  
-export LANG="fr_BE.UTF-8"+Il faut donc :\\ 
 +- soit mettre les emplacements __complets__ des exécutables dans les commandes et les scripts appelés par cron, par exemple : 
 +<code>/usr/bin/zenity --info --text="Toto va bien!"</code> 
 +- soit ajouter une ligne de PATH dans le fichier crontab, __avant__ les appels de scriptsCette ligne définie où il est très probable que se trouveront les programmes appelés : 
 +<code>PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin</code> 
 +Soit faire les deux si on est très prudent :).
  
-/usr/bin/zenity --info --text="Toto va bien.\nReviens manger à la maison\!"+Enfin, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l'exécution de votre script par un changement de répertoire : 
 +<code bash> 
 +* * * * * cd /home/mon-compte/wokspace/ && /home/mon-compte/miniconda3/bin/python3 mon_script.py
 </code> </code>
  
Ligne 166: Ligne 172:
  
 Si vous avez besoin qu'un script soit exécuté toutes les heures au niveau du système (par root), il suffit donc de le placer dans le dossier /etc/cron.hourly et de le rendre exécutable. De même s'il s'agit d'une tâche quotidienne (daily), hebdomadaire (weekly) ou mensuelle (monthly). Si vous avez besoin qu'un script soit exécuté toutes les heures au niveau du système (par root), il suffit donc de le placer dans le dossier /etc/cron.hourly et de le rendre exécutable. De même s'il s'agit d'une tâche quotidienne (daily), hebdomadaire (weekly) ou mensuelle (monthly).
- 
  
 ===== Utilisation du répertoire /etc/cron.d  ===== ===== Utilisation du répertoire /etc/cron.d  =====
Ligne 183: Ligne 188:
  
 Une autre façon de créer une tâche planifiée devant être exécutée par root est d'ajouter une entrée au fichier /etc/crontab ou de créer un nouveau fichier dans /etc/cron.d (cf. point précédent) en précisant bien root comme nom d'utilisateur. Une autre façon de créer une tâche planifiée devant être exécutée par root est d'ajouter une entrée au fichier /etc/crontab ou de créer un nouveau fichier dans /etc/cron.d (cf. point précédent) en précisant bien root comme nom d'utilisateur.
- 
-==== Répertoires ==== 
-Une tâche cron est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d'environnement habituelles et en particulier **PATH** ne sont pas connues. 
- 
-Il faut donc soit mettre les emplacements complets des exécutables dans les commandes et les scripts appelés par cron, soit définir PATH dans le fichier crontab : 
-<code> 
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 
-</code> 
-Il peut être utile d'identifier le chemin où se trouve votre exécutable, exemple avec python : 
-<code bash> 
-which python3 
-# peut par exemple retourner 
-/home/mon-compte/miniconda3/bin/python3 
-</code> 
- 
-De même, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l'exécution de votre script par un changement de répertoire : 
-<code bash> 
-* * * * * cd /home/mon-compte/wokspace/ && /home/mon-compte/miniconda3/bin/python3 mon_script.py 
-</code> 
  
 ==== Tests ==== ==== Tests ====