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 25/10/2020, 19:07] – ajout §[Log] bcag2 | cron [Le 28/01/2021, 15:52] (Version actuelle) – [Autres Considérations] bruno | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | ====== Programmer des tâches avec CRON ====== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== 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. Chaque utilisateur a un fichier **crontab**, | ||
| + | Cron est parfois appelé « planificateur de tâches » ou « gestionnaire de tâches planifiées ». | ||
| + | |||
| + | |||
| + | |||
| + | ===== Comment fonctionne Cron ? ===== | ||
| + | |||
| + | Les tâches planifiées cron sont définies au niveau du système dans le fichier / | ||
| + | Il est déconseillé de modifier directement le fichier / | ||
| + | |||
| + | Voici une courte description de la structure d'une entrée dans un fichier crontab.\\ | ||
| + | Les champs, dans l' | ||
| + | * //minute//, | ||
| + | * // | ||
| + | * //jours dans le mois//, | ||
| + | * //mois//. | ||
| + | * //jour de la semaine// | ||
| + | * La commande à lancer. | ||
| + | |||
| + | ---- | ||
| + | Si __//jour du mois//__ et __// | ||
| + | Exemple avec < | ||
| + | |||
| + | ---- L' | ||
| + | < | ||
| + | 5 3 * * * nomdutilisateur / | ||
| + | </ | ||
| + | ---- Vous pouvez faire tourner **cron** toutes les 5 minutes tout au long de la journée de travail (9am-5pm) avec un message : | ||
| + | |||
| + | < | ||
| + | */5 9-17 * * mon, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ou vous rappeler un anniversaire à 9h du matin le 10 janvier chaque année : | ||
| + | |||
| + | < | ||
| + | 0 9 10 jan * echo " | ||
| + | </ | ||
| + | |||
| + | ---- | ||
| + | Il existe des raccourcis intéressants : | ||
| + | |||
| + | * @reboot # se lance au boot avec les droits utilisateurs, | ||
| + | * @yearly | ||
| + | * @annually | ||
| + | * @monthly | ||
| + | * @weekly | ||
| + | * @daily | ||
| + | * @midnight | ||
| + | * @hourly | ||
| + | |||
| + | Cf. aussi : | ||
| + | |||
| + | man 5 crontab | ||
| + | |||
| + | |||
| + | |||
| + | Vous pouvez générer le code grâce à ces outils en ligne : | ||
| + | https:// | ||
| + | https:// | ||
| + | http:// | ||
| + | ===== Commandes pour gérer les tâches planifiées Cron ===== | ||
| + | |||
| + | Pour examiner les tâches planifiées de l' | ||
| + | |||
| + | <code bash> | ||
| + | crontab -l | ||
| + | </ | ||
| + | |||
| + | Pour modifier vos tâches planifiées tapez : | ||
| + | |||
| + | <code bash> | ||
| + | et pour modifier celles d'un autre utilisateur : | ||
| + | <code bash> | ||
| + | |||
| + | Quand vous sortez de l' | ||
| + | |||
| + | Note : sur xubuntu, il faut auparavant indiquer que l' | ||
| + | |||
| + | L' | ||
| + | < | ||
| + | sudo update-alternatives --config editor | ||
| + | </ | ||
| + | ou par un : | ||
| + | select-editor | ||
| + | | ||
| + | <note tip> | ||
| + | |||
| + | 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 ===== | ||
| + | Si vous avez besoin d'une interface graphique par exemple pour utiliser zenity, kdialog, dialog ou encore totem, vlc, ... Il vous faudra effectuer plusieurs choses : | ||
| + | 1° ajouter un DISPLAY=:0 devant la commande dans le cron. | ||
| + | Exemple : | ||
| + | < | ||
| + | */5 * * * * DISPLAY=:0 zenity --info --text=" | ||
| + | </ | ||
| + | |||
| + | <note important> | ||
| + | |||
| + | 2° Si vous utilisez un script nécessitant des caractères tels que des accents, n' | ||
| + | Exemple : | ||
| + | < | ||
| + | #!/bin/bash | ||
| + | |||
| + | export LANG=" | ||
| + | |||
| + | / | ||
| + | </ | ||
| + | |||
| + | ===== Utilisation des répertoires / | ||
| + | |||
| + | Si vous avez examiné le fichier / | ||
| + | |||
| + | 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 / | ||
| + | IL est possible d' | ||
| + | |||
| + | Attention contrairement aux lignes d'un fichier crontab, elles doivent préciser quel utilisateur (nom_utilisateur dans l' | ||
| + | < | ||
| + | |||
| + | ===== Autres Considérations ===== | ||
| + | |||
| + | Les commandes ci-dessus sont stockées dans un fichier **crontab** appartenant à votre compte d' | ||
| + | |||
| + | < | ||
| + | |||
| + | Remarque : cette commande édite directement le fichier // / | ||
| + | |||
| + | Une autre façon de créer une tâche planifiée devant être exécutée par root et d' | ||
| + | |||
| + | |||
| + | |||
| + | <note important> | ||
| + | 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 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 " | ||
| + | </ | ||
| + | |||
| + | 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 : | ||
| + | < | ||
| + | **Attention**, | ||
| + | |||
| + | Pour plus d' | ||
| + | Sur une machine qui n'est pas allumée en permanence**[[anacron|anacron]]** (installé par défaut) permet de s' | ||
| + | |||
| + | |||
| + | ==== Log ==== | ||
| + | Par défaut on retrouve des log de commandes CRON dans /// | ||
| + | Pour activer le log spécifique de CRON:\\ | ||
| + | Éditer le fichier /// | ||
| + | <code bash> | ||
| + | cron.* | ||
| + | </ | ||
| + | |||
| + | Relancer //rsyslog// et //cron// | ||
| + | <code bash> | ||
| + | sudo systemctl restart rsyslog | ||
| + | sudo systemctl restart cron | ||
| + | </ | ||
| + | Il ne reste plus qu'à surveiller les log de CRON: | ||
| + | <code bash> | ||
| + | sudo tail -f / | ||
| + | </ | ||
| + | |||
| + | et si vous voulez des tâches silencieuses ((https:// | ||
| + | ===== Liens ===== | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[: | ||
| + | * [[incron]] : effectuer une action, commande(s), | ||
| + | * [[https:// | ||
| + | * [[: | ||
| + | * [[fcron]] : programmer des tâches devant être exécutées/ | ||
| + | * [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
