« Cron » : différence entre les versions
(Changement de catégorie et de balises code) |
|||
(3 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category: | [[Category:Service_ordonnancement]] | ||
[https://fr.wikipedia.org/wiki/Cron Cron] est un programme qui permet aux utilisateurs des systèmes [https://fr.wikipedia.org/wiki/Unix Unix] d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance ou selon un cycle défini à l’avance. | [https://fr.wikipedia.org/wiki/Cron Cron] est un programme qui permet aux utilisateurs des systèmes [https://fr.wikipedia.org/wiki/Unix Unix] d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance ou selon un cycle défini à l’avance. | ||
=Installation= | =Installation= | ||
Cron est un outil très répandu, il est installé par défaut dans la plupart des distributions. Cependant, ce n'est pas toujours le cas (Debian via [[Lxc|LXC]] par exemple). Voici le paquet à installer pour gérer les crontabs : | Cron est un outil très répandu, il est installé par défaut dans la plupart des distributions. Cependant, ce n'est pas toujours le cas (Debian via [[Lxc|LXC]] par exemple). Voici le paquet à installer pour gérer les crontabs : | ||
apt install cron | |||
=Interaction avec les crontabs= | =Interaction avec les crontabs= | ||
Ligne 34 : | Ligne 34 : | ||
La syntaxe du fichier cron (crontab) l'ordre suivant : | La syntaxe du fichier cron (crontab) l'ordre suivant : | ||
< | <syntaxhighlight lang="bash"> | ||
#mm hh jj MM JJ Tâche | #mm hh jj MM JJ Tâche | ||
#Pour une tâche qui s’exécute toute les minutes de tous les jours de l'année : | #Pour une tâche qui s’exécute toute les minutes de tous les jours de l'année : | ||
Ligne 42 : | Ligne 42 : | ||
#Planifier une tâche à 12 heure du lundi au vendredi de toute les semaines de l'année | #Planifier une tâche à 12 heure du lundi au vendredi de toute les semaines de l'année | ||
00 12 * * 1-5 date >> /root/visudate.log | 00 12 * * 1-5 date >> /root/visudate.log | ||
</ | </syntaxhighlight> | ||
{{astuce|Parfois, le système envoi des emails à root alors qu'on a rien demandé (et du coup ça fait du spam). Afin d'éviter ça, il faut vider la variable MAILTO en ajoutant cette ligne dans la crontab : MAILTO=""}} | {{astuce|Parfois, le système envoi des emails à root alors qu'on a rien demandé (et du coup ça fait du spam). Afin d'éviter ça, il faut vider la variable MAILTO en ajoutant cette ligne dans la crontab : MAILTO{{=}}""}} | ||
=Emplacement des crontab= | |||
En cas de crash ou de migration du serveur, l'usage de la commande ''crontab'' n'est pas toujours possible. Les crontab sont stockés dans le répertoire <code lang="bash" inline>/var/spool/cron/crontabs</code>. Il suffit alors d'en afficher le contenu pour récupérer les tâches. | |||
=Sources= | =Sources= |
Dernière version du 28 février 2022 à 00:08
Cron est un programme qui permet aux utilisateurs des systèmes Unix d’exécuter automatiquement des scripts, des commandes ou des logiciels à une date et une heure spécifiées à l’avance ou selon un cycle défini à l’avance.
Installation
Cron est un outil très répandu, il est installé par défaut dans la plupart des distributions. Cependant, ce n'est pas toujours le cas (Debian via LXC par exemple). Voici le paquet à installer pour gérer les crontabs :
apt install cron
Interaction avec les crontabs
Édition d'une crontab
Une crontab est spécifique à un utilisateur. L'édition d'une crontab s'effectue via la commande :
# crontab -e
Lister une crontab
Pour l'utilisateur courant
# crontab -l
Pour un utilisateur donné
# crontab -u nom_utilisateur -l
Pour tout les utilisateurs du système
# for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" && crontab -u $user -l; done
Syntaxe
Chaque ligne du fichier représente une tâche à exécuter au temps spécifier dans cette même ligne. Les paramètres de temps sont au nombre de 5+1 paramètre pour la commande à lancer.
Les paramètres sont les suivants et sont séparés par des espaces (leur ordre est important) :
- mm : représente les minutes de 0 à 59
- hh : représente l'heure (de 0 à 23)
- jj : représente le jour du mois (de 1 à 31)
- MM : représente le mois (de 1 à 12)
- JJ : représente le jour de la semaine (0 représente le dimanche, 1 le lundi...)
- Tâche : représente la commande ou le script shell à exécuter
La syntaxe du fichier cron (crontab) l'ordre suivant :
#mm hh jj MM JJ Tâche
#Pour une tâche qui s’exécute toute les minutes de tous les jours de l'année :
* * * * * /root/script.sh
#Pour une tâche qui s'exécute toute les 5 minutes de tous les jours de l'année :
*/5 * * * * /root/script.sh
#Planifier une tâche à 12 heure du lundi au vendredi de toute les semaines de l'année
00 12 * * 1-5 date >> /root/visudate.log
ASTUCE
Parfois, le système envoi des emails à root alors qu'on a rien demandé (et du coup ça fait du spam). Afin d'éviter ça, il faut vider la variable MAILTO en ajoutant cette ligne dans la crontab : MAILTO=""Emplacement des crontab
En cas de crash ou de migration du serveur, l'usage de la commande crontab n'est pas toujours possible. Les crontab sont stockés dans le répertoire /var/spool/cron/crontabs
. Il suffit alors d'en afficher le contenu pour récupérer les tâches.