Traitement cron qui ne s'exécute plus (rapport nocturne absent)
Aucune dans la sortie du script (qui n'est jamais lancé), ou dans syslog : ```text cron[512]: (*system*) ERROR (Missing newline before EOF, this crontab file will be ignored) CRON[2211]: (root) CMD (report.sh) → /bin/sh: 1: report.sh: not found ```
Détecter
Le rapport nocturne n'est plus envoyé depuis la dernière maintenance ; aucune alerte n'a été levée.
Symptômes
Le rapport nocturne n'est plus envoyé depuis la dernière maintenance ; aucune alerte n'a été levée.
Environnement
Tâche dans /etc/cron.d/rapport, script shell appelant Python, serveur Debian.
Cause racine
Classiques de cron : fichier de /etc/cron.d sans saut de ligne final ou avec mauvais propriétaire/droits, colonne utilisateur oubliée, PATH réduit (commande non trouvée), script non exécutable, service cron arrêté.
Diagnostic
systemctl status cron
ls -l /etc/cron.d/rapport; tail -c1 /etc/cron.d/rapport | xxd
grep CRON /var/log/syslog | tail -20
sudo -u rapport env -i /bin/sh -c '/opt/rapport/report.sh' # simuler l'environnement cron
Solution
Chemin absolu du script, PATH défini en tête du fichier, colonne utilisateur, saut de ligne final, droits 644 root:root, script exécutable, sortie redirigée vers un journal.
Commandes
PATH=/usr/local/bin:/usr/bin:/bin
30 2 * * * rapport /opt/rapport/report.sh >> /var/log/rapport.log 2>&1
Prévention
Supervision « dead man's switch » (le traitement signale son succès, alerte en cas d'absence), timers systemd, ordonnanceur centralisé pour les chaînes critiques.