Syntaxe de crontab
Les cinq champs d’une ligne cron, les raccourcis (@daily…) et des exemples courants prêts à copier.
Les cinq 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
Opérateurs
| Symbole | Sens |
|---|---|
* |
toutes les valeurs |
, |
liste : 1,15,30 |
- |
plage : 9-17 |
*/5 |
pas : toutes les 5 unités |
Raccourcis
| Raccourci | Équivaut à |
|---|---|
@hourly |
0 * * * * |
@daily |
0 0 * * * |
@weekly |
0 0 * * 0 |
@monthly |
0 0 1 * * |
@reboot |
au démarrage |
Exemples
*/15 * * * * toutes les 15 minutes 0 3 * * * tous les jours à 3 h 0 9 * * 1-5 à 9 h en semaine 30 2 1 * * le 1er de chaque mois à 2 h 30
Éditer :
crontab -e· lister :crontab -l· pensez à rediriger la sortie :>> /var/log/moncron.log 2>&1.
Variables d'environnement et chemins absolus
Cron s'exécute avec un environnement minimal (pas votre .bashrc) : utilisez toujours des chemins absolus.
MAILTO="" PATH=/usr/local/bin:/usr/bin:/bin 0 2 * * * /usr/local/bin/mon-script.sh
Un script qui fonctionne parfaitement en ligne de commande peut échouer silencieusement dans cron si $PATH ne contient pas les mêmes dossiers qu'en session interactive.
Tester et déboguer une tâche cron
crontab -l # lister les tâches actuelles grep CRON /var/log/syslog # voir si/quand une tâche s'est déclenchée (Debian/Ubuntu) run-parts --test /etc/cron.daily # simuler les tâches système sans les exécuter
Pour déboguer une commande qui échoue silencieusement, testez-la d'abord avec exactement le même environnement que cron : env -i /bin/sh -c 'votre-commande'.
Cron vs systemd timers
| Cron | Timers systemd | |
|---|---|---|
| Configuration | Une ligne dans un fichier crontab | Deux fichiers unit (.service + .timer) |
| Journalisation | À gérer soi-même (redirection) | Intégrée via journalctl |
| Dépendances | Aucune gestion native | Peut dépendre d'autres services |
| Simplicité | Très simple pour une tâche isolée | Plus verbeux, mais plus robuste à grande échelle |
Merci pour votre retour !