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 04/03/2018, 11:37] – ancienne révision (Le 15/03/2017, 15:35) restaurée L'Africain | 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:// | ||
+ | |||
+ | ---- | ||
+ | |||
+ | // |