Différences
Ci-dessous, les différences entre deux révisions de la page.
| 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]]). | ||