Aide-mémoire3 min de lecture · Mis à jour le 29 sept. 2026

cron et timers systemd — aide-mémoire de l'ordonnancement

Syntaxe cron, pièges d'environnement, verrouillage des traitements concurrents et équivalents systemd timers.

  • #automation
  • #linux
  • #troubleshooting

Syntaxe

┌ minute (0-59)
│ ┌ heure (0-23)
│ │ ┌ jour du mois (1-31)
│ │ │ ┌ mois (1-12)
│ │ │ │ ┌ jour de semaine (0-7, 0 et 7 = dimanche)
│ │ │ │ │
30 2 * * 1-5  /opt/batch/export.sh
ExpressionSignification
*/15 * * * *toutes les 15 minutes
0 */4 * * *toutes les 4 heures
0 6 1 * *le 1er du mois à 6 h
@rebootau démarrage

Où sont les tâches ?

crontab -l                       # utilisateur courant
sudo crontab -l -u www-data
ls /etc/cron.d /etc/cron.daily
cat /etc/crontab                 # format avec colonne utilisateur !

Dans /etc/cron.d/* et /etc/crontab, il y a une colonne utilisateur supplémentaire ; les fichiers de /etc/cron.d doivent appartenir à root, sans point dans le nom, et se terminer par un saut de ligne.

Pièges d'environnement

  • PATH minimal (/usr/bin:/bin) → chemins absolus ou PATH= en tête du crontab.
  • Pas de profil shell chargé ; % doit être échappé (\%).
  • Sortie perdue : rediriger >> /var/log/batch/export.log 2>&1.

Éviter les exécutions concurrentes

*/5 * * * * flock -n /run/lock/export.lock /opt/batch/export.sh

Chaîner avec dépendances

/opt/batch/extract.sh && /opt/batch/transform.sh && /opt/batch/load.sh \
  || logger -t batch "chaîne nocturne en échec"

Diagnostic

grep CRON /var/log/syslog | tail
journalctl -u cron --since today

Équivalent systemd timer

# /etc/systemd/system/export.timer
[Timer]
OnCalendar=Mon..Fri 02:30
Persistent=true          # rattrape une exécution manquée (serveur éteint)
[Install]
WantedBy=timers.target

Avantages : journaux dans journald, dépendances, isolation, systemctl list-timers.

Autres labs de cette technologie