Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| cron [Le 31/10/2022, 12:17] – [Distinction d'avec Anacron] style 141.227.26.230 | cron [Le 07/01/2026, 14:05] (Version actuelle) – [Choix de l'utilisateur Cron] 141.227.26.230 | ||
|---|---|---|---|
| Ligne 5: | Ligne 5: | ||
| ====== Programmer des tâches avec CRON ====== | ====== Programmer des tâches avec CRON ====== | ||
| - | ===== Qu' | + | ===== Qu' |
| - | **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' | + | |
| + | Chaque utilisateur a un fichier **Crontab**, lui permettant d' | ||
| 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 ». | ||
| - | ====Distinction | + | ====Distinction avec Anacron==== |
| Cron est plutôt utilisé pour des machines à fonctionnement permanent (comme les serveurs).\\ | 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). | [[Anacron]] est plutôt utilisé pour des machines à fonctionnement discontinu (comme les PC). | ||
| - | En effet, 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. | + | Cron a plus d' |
| + | 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. | ||
| - | [[Anacron]] utilise | + | [[Anacron]] |
| - | ===== Comment fonctionne Cron ? ===== | + | 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' |
| + | |||
| + | La syntaxe de Cron est plus complexe que celle d' | ||
| + | |||
| + | ===== Choix de l' | ||
| + | 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' | ||
| + | |||
| + | 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' | ||
| + | |||
| + | Pour lancer le cron de votre espace utilisateur : **crontab -e**. Pour consulter ce cron sans l' | ||
| + | |||
| + | ===== Comment fonctionne Cron ===== | ||
| Les tâches planifiées cron sont définies au niveau du système dans le fichier / | Les tâches planifiées cron sont définies au niveau du système dans le fichier / | ||
| - | 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 |
| - | Les tâches définies dans **crontab** sont par principe exécutées par // | + | |
| - | Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l' | + | Voici une courte description de la structure d'une entrée dans un fichier crontab. Les champs à renseigner sont __dans l' |
| - | * //minute// (les minutes se numérotent de 0 à 59) | + | |
| - | * //heure// (les heures se numérotent de 0 à 23) | + | * // |
| - | * //jours dans le mois// (les jours se numérotes de 1 à 31) | + | * // |
| - | * //mois// (les mois se numérotent de 1 à 12, ou s' | + | * //jours dans le mois// |
| - | * //jour de la semaine// (les jours se numérotent de 1 (lundi) à 7 (dimanche), ou s' | + | * // |
| + | * //jour de la semaine// | ||
| * La commande à lancer. | * La commande à lancer. | ||
| + | Un champ contenant une étoile ** * ** signifie ' | ||
| + | |||
| + | Récapitulatif des 5 premiers champs : | ||
| + | | | 1er | 2nd | 3è | 4è | 5è | | ||
| + | | | * | * | * | * | * | | ||
| + | | id | minute | heure | jour dans le mois | mois | jour de la semaine | ||
| + | | valeur | 0-59 | 0-23 | 1-31 | 1-12 ou jan, feb, mar… | 1-7 ou mon, tue, wed… | | ||
| ---- | ---- | ||
| Ligne 62: | Ligne 86: | ||
| * @midnight | * @midnight | ||
| * @hourly | * @hourly | ||
| + | |||
| + | Exemples de lancements de tâches : | ||
| + | |||
| + | chaque demie-heure (***/30** est une instruction, | ||
| + | < | ||
| + | |||
| + | chaque heure, au début de l' | ||
| + | < | ||
| + | chaque heure, à la 30e minute de l' | ||
| + | < | ||
| + | |||
| + | chaque heure, mais uniquement entre 9h00 et 5h00 | ||
| + | < | ||
| Cf. aussi : | Cf. aussi : | ||
| man 5 crontab | man 5 crontab | ||
| - | |||
| Ligne 73: | Ligne 109: | ||
| https:// | https:// | ||
| http:// | http:// | ||
| + | |||
| ===== Commandes pour gérer les tâches planifiées Cron ===== | ===== Commandes pour gérer les tâches planifiées Cron ===== | ||
| - | Pour examiner les tâches planifiées de l' | + | Pour examiner les tâches planifiées de l' |
| <code bash> | <code bash> | ||
| Ligne 82: | Ligne 119: | ||
| Pour modifier vos tâches planifiées tapez : | Pour modifier vos tâches planifiées tapez : | ||
| - | |||
| <code bash> | <code bash> | ||
| + | pour celles nécessitant normalement un mot de passe (qui dès lors ne sera pas demandé) : | ||
| + | <code bash> | ||
| et pour modifier celles d'un autre utilisateur : | et pour modifier celles d'un autre utilisateur : | ||
| <code bash> | <code bash> | ||
| Ligne 89: | Ligne 127: | ||
| Quand vous sortez de l' | Quand vous sortez de l' | ||
| - | Note : sur xubuntu, il faut auparavant indiquer que l' | + | <note important> |
| + | Pour cela il faut créer un fichier | ||
| L' | L' | ||
| Ligne 101: | 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 116: | 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. | + | Une tâche cron est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d' |
| - | < | + | |
| - | #!/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 : | ||
| + | < | ||
| + | - soit ajouter une ligne de PATH dans le fichier crontab, __avant__ les appels de scripts. Cette ligne définie où il est très probable que se trouveront les programmes appelés : | ||
| + | < | ||
| + | - Soit faire les deux si on est très prudent :). | ||
| - | /usr/bin/zenity | + | Enfin, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l' |
| + | <code bash> | ||
| + | * * * * * cd /home/mon-compte/wokspace/ && /home/mon-compte/ | ||
| </ | </ | ||
| Ligne 130: | 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 / | 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 / | ||
| - | |||
| ===== Utilisation du répertoire / | ===== Utilisation du répertoire / | ||
| - | IL est possible d' | + | IL est possible d' |
| - | Attention contrairement aux lignes d'un fichier crontab, elles doivent préciser quel utilisateur (nom_utilisateur dans l' | + | Attention contrairement aux lignes d'un fichier crontab, elles doivent préciser quel utilisateur (nom_utilisateur dans l' |
| < | < | ||
| Ligne 147: | Ligne 188: | ||
| Une autre façon de créer une tâche planifiée devant être exécutée par root est d' | Une autre façon de créer une tâche planifiée devant être exécutée par root est d' | ||
| - | |||
| - | ==== Répertoires ==== | ||
| - | Une tâche cron est exécutée dans un shell non connecté (non-login) et non interactif. Les variables d' | ||
| - | |||
| - | 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 : | ||
| - | < | ||
| - | PATH=/ | ||
| - | </ | ||
| - | Il peut être utile d' | ||
| - | <code bash> | ||
| - | which python3 | ||
| - | # peut retourné par exemple | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | De même, si le programm (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l' | ||
| - | <code bash> | ||
| - | * * * * * cd / | ||
| - | </ | ||
| ==== Tests ==== | ==== Tests ==== | ||
| Ligne 171: | Ligne 193: | ||
| 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' | 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' | ||
| - | < | + | < |
| echo " | echo " | ||
| </ | </ | ||
| Ligne 177: | Ligne 199: | ||
| Une autre façon de contrôler la bonne exécution des tâches cron est d' | Une autre façon de contrôler la bonne exécution des tâches cron est d' | ||
| 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 : | ||
| - | < | + | < |
| - | **Attention**, | + | <note important> |
| + | Au contraire, si vous ne voulez pas envoyer d’emails, ajouter simplement comme 1ère ligne utile <code bash> | ||
| Pour plus d' | Pour plus d' | ||
| - | Sur une machine qui n'est pas allumée en permanence**[[anacron|anacron]]** (installé par défaut) permet de s' | + | Sur une machine qui n'est pas allumée en permanence, **[[anacron|anacron]]** (installé par défaut) permet de s' |
| ==== Log ==== | ==== Log ==== | ||
| - | Par défaut on retrouve des log de commandes CRON dans /// | + | Par défaut on retrouve des logs de commandes CRON dans /// |
| Pour activer le log spécifique de CRON:\\ | Pour activer le log spécifique de CRON:\\ | ||
| Éditer le fichier /// | Éditer le fichier /// | ||
| Ligne 197: | Ligne 220: | ||
| sudo systemctl restart cron | sudo systemctl restart cron | ||
| </ | </ | ||
| - | Il ne reste plus qu'à surveiller les log de CRON: | + | Il ne reste plus qu'à surveiller les logs de CRON: |
| <code bash> | <code bash> | ||
| sudo tail -f / | sudo tail -f / | ||
