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 03/05/2023, 12:09] – [Qu'est-ce que Cron] 81.185.162.136 | cron [Le 07/01/2026, 14:05] (Version actuelle) – [Choix de l'utilisateur Cron] 141.227.26.230 | ||
|---|---|---|---|
| Ligne 6: | Ligne 6: | ||
| ===== 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 ». | ||
| - | |||
| - | De la merde | ||
| ====Distinction avec Anacron==== | ====Distinction avec Anacron==== | ||
| Ligne 16: | Ligne 15: | ||
| [[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]] n' | ||
| + | |||
| + | 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' | ||
| - | [[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 jours, anacron constatera le retard, et lancera donc la tâche juste après | + | Pour lancer |
| ===== Comment fonctionne Cron ===== | ===== 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) | + | * //jours dans le mois// |
| - | * //mois// (les mois se numérotent de 1 à 12, ou s' | + | * // |
| - | * //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 : | Récapitulatif des 5 premiers champs : | ||
| Ligne 71: | 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 82: | 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 91: | 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 98: | 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 110: | 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 125: | 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 139: | 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 156: | 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 par exemple retourner | ||
| - | / | ||
| - | </ | ||
| - | |||
| - | De même, si le programme (script) exécuté doit sauvegarder des fichiers, il peut être utile de précéder l' | ||
| - | <code bash> | ||
| - | * * * * * cd / | ||
| - | </ | ||
| ==== Tests ==== | ==== Tests ==== | ||
| Ligne 180: | 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 186: | 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' | ||
