Automatisation Tutoriel

Cron : planifier des tâches automatiques sous Linux (syntaxe expliquée)

Comprendre la syntaxe cron en 5 champs, créer une crontab, éviter les pièges classiques (chemins, variables, logs) : le guide pratique avec exemples.

Sommaire7 parties
  1. La syntaxe en 5 champs
  2. Des exemples prêts à l’emploi
  3. Le piège du jour du mois et du jour de la semaine
  4. Créer et gérer sa crontab
  5. Les 4 pièges qui font qu’une tâche « ne marche pas »
  6. Tester avant de faire confiance
  7. Et sous Windows ?
  8. En résumé

Sauvegarder une base de données chaque nuit, vider un dossier temporaire chaque semaine, lancer un script toutes les 5 minutes : sous Linux, c’est le rôle de cron, le planificateur de tâches présent sur quasiment tous les serveurs.

Sa syntaxe paraît cryptique au premier abord, mais elle repose sur une logique simple. Une fois comprise, vous la retrouverez partout : dans GitHub Actions, dans les outils d’automatisation comme n8n, dans les hébergeurs…

À retenir Une ligne cron = 5 champs de temps + la commande à exécuter. minute heure jour-du-mois mois jour-de-la-semaine commande

La syntaxe en 5 champs

┌──────── minute (0 - 59)
│ ┌────── heure (0 - 23)
│ │ ┌──── jour du mois (1 - 31)
│ │ │ ┌── mois (1 - 12)
│ │ │ │ ┌ jour de la semaine (0 - 7, 0 et 7 = dimanche)
│ │ │ │ │
* * * * *  commande à exécuter

Les symboles à connaître :

Symbole Signification Exemple
* toutes les valeurs * en heure = toutes les heures
, une liste 1,15 = le 1er et le 15
- un intervalle 1-5 = du lundi au vendredi
/ un pas */10 en minute = toutes les 10 minutes

Des exemples prêts à l’emploi

Expression Signification
*/5 * * * * Toutes les 5 minutes
0 * * * * Toutes les heures, à la minute 0
30 2 * * * Tous les jours à 2 h 30
0 9 * * 1-5 Du lundi au vendredi à 9 h
0 0 * * 0 Tous les dimanches à minuit
0 3 1 * * Le 1er de chaque mois à 3 h
15 8,12,18 * * * Chaque jour à 8 h 15, 12 h 15 et 18 h 15

Beaucoup de versions de cron acceptent aussi des raccourcis : @daily (une fois par jour, à minuit), @weekly, @monthly, et @reboot (au démarrage de la machine).

Le piège du jour du mois et du jour de la semaine

Si vous renseignez à la fois le jour du mois et le jour de la semaine, cron exécute la tâche quand l’un ou l’autre correspond, et non quand les deux correspondent.

Ainsi, 0 9 13 * 5 ne signifie pas « chaque vendredi 13 ». Cette expression veut dire « chaque 13 du mois et chaque vendredi ».

Créer et gérer sa crontab

Chaque utilisateur possède sa propre liste de tâches, sa crontab :

crontab -e    # modifier ses tâches (ouvre un éditeur)
crontab -l    # afficher ses tâches

Ajoutez une ligne par tâche, enregistrez, et c’est actif. Exemple, une sauvegarde chaque nuit à 2 h 30 :

30 2 * * * /home/alex/scripts/sauvegarde.sh >> /home/alex/logs/sauvegarde.log 2>&1

La commande crontab -r supprime toute votre crontab sans confirmation. Elle est à un caractère de crontab -e sur le clavier. Gardez une copie de vos tâches avec crontab -l > ma-crontab.txt.

Les 4 pièges qui font qu’une tâche « ne marche pas »

Une commande qui fonctionne dans votre terminal peut échouer dans cron. Presque toujours pour l’une de ces raisons.

1. L’environnement est minimal. Cron n’utilise pas le même environnement que votre session : le PATH est réduit, et vos alias et variables n’existent pas. Utilisez des chemins absolus pour les programmes et les fichiers, par exemple /usr/bin/python3 plutôt que python3.

2. Le dossier de travail n’est pas celui que vous croyez. Les chemins relatifs comme ./data ne pointent pas où vous pensez. Là encore, utilisez des chemins absolus, ou commencez la commande par cd /chemin/du/projet &&.

3. Les erreurs sont invisibles. Sans redirection, les messages d’erreur sont perdus, ou envoyés par e-mail local si le système est configuré pour. Ajoutez toujours >> fichier.log 2>&1 pour garder une trace : 2>&1 redirige aussi les erreurs vers le fichier.

4. Le symbole % est spécial. Dans une ligne de crontab, % est interprété comme un retour à la ligne. Pour une date dans un nom de fichier, échappez-le : $(date +\%Y-\%m-\%d).

Tester avant de faire confiance

  • Vérifiez votre expression avec un outil comme crontab.guru, qui traduit l’expression en langage clair.
  • Testez d’abord avec une fréquence rapprochée (*/2 * * * *), vérifiez le fichier de log, puis passez à la fréquence définitive.
  • Tenez compte du fuseau horaire. Cron utilise l’heure du serveur, qui est souvent en UTC. Vérifiez-la avec la commande date.

Et sous Windows ?

L’équivalent de cron sous Windows est le Planificateur de tâches. Nous l’utilisons pas à pas dans notre tutoriel pour sauvegarder automatiquement ses dossiers avec Robocopy.

En résumé

Cron exécute une commande selon 5 champs : minute, heure, jour du mois, mois, jour de la semaine. Pour des tâches fiables :

  • utilisez des chemins absolus ;
  • redirigez la sortie vers un fichier de log ;
  • échappez les % ;
  • testez avant de laisser tourner.