Linux & Bash · Chapitre 7

7. Crontab

Nous savons maintenant écrire des scripts et les laisser s’exécuter comme des processus. Il reste une étape importante : déclencher automatiquement une commande ou un script à une date ou selon une fréquence précise. Sous Linux, c’est le rôle de cron et des fichiers crontab.

Fil conducteur : une tâche à automatiser → définir quand elle doit s’exécuter → écrire l’expression cron → enregistrer le job dans la crontab → vérifier la planification.

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 /

SymboleRôleIdée
*Toutes les valeurs possibles« peu importe cette unité »
-Plage de valeursde telle valeur à telle valeur
,Liste de valeursplusieurs valeurs précises
/Pas / intervalletoutes 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 ».

À savoir : certaines implémentations de cron acceptent aussi des noms abrégés comme 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.
Méthode : lisez toujours l’expression de gauche à droite : minute → heure → jour du mois → mois → jour de la semaine → commande.
Idée clé : cron ne change pas la nature d’un script : il automatise simplement son déclenchement selon une planification.

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

CommandeRôle
crontab -eModifier la crontab de l’utilisateur actuel.
crontab -lAfficher son contenu.
crontab -u utilisateurCibler la crontab d’un autre utilisateur.
crontab -rSupprimer la crontab de l’utilisateur actuel.
crontab -iDemander 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.

Importance pour un DevOps : cron permet d’automatiser des tâches récurrentes sur un système Linux : maintenance, scripts de contrôle, traitements périodiques ou nettoyage. Il transforme une commande manuelle en tâche planifiée.