7.1 Comprendre Cron et Crontab
7.1.1 Cron : exécuter des tâches automatiquement
Cron est le mécanisme qui exécute automatiquement des tâches selon une planification. Son nom vient de « Chronos », le temps.
Il est utilisé pour des tâches répétitives : gestion de logs, nettoyage de cache, envoi périodique d’e-mails ou exécution régulière d’un script.
7.1.2 Crontab : décrire la planification
La crontab est le fichier de configuration qui indique quelles commandes doivent être exécutées et à quels moments. La commande crontab permet de consulter ou modifier cette planification.
7.2 Lire la syntaxe d’un Cron Job
7.2.1 Les cinq champs de temps
* * * * * commande_ou_script
│ │ │ │ │
│ │ │ │ └─ jour de la semaine : 0-6 (0 = dimanche, 1 = lundi, …, 6 = samedi)
│ │ │ └─── mois : 1-12
│ │ └───── jour du mois : 1-31
│ └─────── heure : 0-23
└───────── minute : 0-59
La commande placée après ces cinq champs est celle que cron exécutera lorsque la date correspondra.
7.2.2 Les opérateurs *, -, , et /
| Symbole | Rôle | Idée |
|---|---|---|
* | Toutes les valeurs possibles | « peu importe cette unité » |
- | Plage de valeurs | de telle valeur à telle valeur |
, | Liste de valeurs | plusieurs valeurs précises |
/ | Pas / intervalle | toutes les N unités |
7.3 Construire une planification
7.3.1 Tous les jours à 5 h 15
15 5 * * * command/script
Minute 15, heure 5 ; les autres champs acceptent toutes les valeurs.
7.3.2 Le 2 de chaque mois à 5 h 15
15 5 2 * * command/script
7.3.3 Toutes les cinq heures
0 */5 * * * command/script
7.3.4 Lundi et mercredi en janvier et février
0 0 * 1,2 1,3 command/script
│ │ │ │ │
│ │ │ │ └─ lundi (1) et mercredi (3)
│ │ │ └───── janvier (1) et février (2)
│ │ └──────── tous les jours du mois
│ └────────── heure 0
└──────────── minute 0
Dans le champ jour de la semaine, la numérotation commence par 0 = dimanche, puis 1 = lundi, 2 = mardi, 3 = mercredi, jusqu’à 6 = samedi. Ainsi, 1,3 signifie « lundi et mercredi ».
jan,feb et mon,wed. Dans ce cours, la notation numérique est privilégiée pour rendre directement visible la valeur de chaque champ.Lorsqu’une crontab appelle directement un script, le système doit savoir comment l’interpréter et avoir le droit de l’exécuter. On retrouve donc les notions vues au chapitre Script Shell : shebang pour désigner l’interpréteur et permission d’exécution pour autoriser le lancement direct.
7.4.2 Script exécutable et interpréteur
Dans une tâche planifiée, il est préférable de désigner explicitement les fichiers et scripts par leur chemin absolu, c’est-à-dire depuis la racine du système, par exemple /home/ubuntu/test.sh. Cela évite de dépendre du répertoire courant au moment où cron déclenche la tâche.
7.4.1 L’importance des chemins absolus
Cron exécute une commande dans un contexte automatisé, sans interaction avec l’utilisateur. La commande ou le script indiqué dans la crontab doit donc pouvoir fonctionner de manière autonome.
7.4 Ce qu’une tâche cron doit pouvoir exécuter
7.5 Administrer une crontab
| Commande | Rôle |
|---|---|
crontab -e | Modifier la crontab de l’utilisateur actuel. |
crontab -l | Afficher son contenu. |
crontab -u utilisateur | Cibler la crontab d’un autre utilisateur. |
crontab -r | Supprimer la crontab de l’utilisateur actuel. |
crontab -i | Demander une confirmation avant suppression. |
7.6 Synthèse : logique d’une tâche planifiée
Une tâche planifiée associe deux informations : ce qui doit être exécuté et quand cela doit l’être. Les cinq champs cron décrivent le calendrier ; la commande ou le chemin du script décrit l’action déclenchée. La crontab regroupe ces règles pour un utilisateur.