Souvent, les scripts crontab
ne sont pas exécutés à la date prévue ou comme prévu. Il y a de nombreuses raisons à cela :
Ce wiki communautaire vise à rassembler les principales raisons pour lesquelles les scripts crontab
ne sont pas exécutés comme prévu. Écrivez chaque raison dans une réponse séparée.
Veuillez inclure une raison par réponse - les détails de la raison pour laquelle le script n'est pas exécuté - et la ou les corrections pour cette raison.
Veuillez n'écrire que les problèmes spécifiques à cron, par exemple les commandes qui s'exécutent comme prévu depuis le shell mais qui s'exécutent de manière erronée par cron.
Ma principale erreur : si vous oubliez d'ajouter un saut de ligne à la fin du fichier crontab
. En d'autres termes, le fichier crontab doit se terminer par une ligne vide.
Vous trouverez ci-dessous la section correspondante dans les pages de manuel (man crontab
puis allez directement à la fin) :
Although cron requires that each entry in a crontab end in a newline
character, neither the crontab command nor the cron daemon will detect
this error. Instead, the crontab will appear to load normally. However,
the command will never run. The best choice is to ensure that your
crontab has a blank line at the end.
4th Berkeley Distribution 29 December 1993 CRONTAB(1)
Le chemin absolu doit être utilisé pour les scripts :
Par exemple, /bin/grep
doit être utilisé au lieu de grep
:
# m h dom mon dow command
0 0 * * * /bin/grep ERROR /home/adam/run.log &> /tmp/errors
Au lieu de :
# m h dom mon dow command
0 0 * * * grep ERROR /home/adam/run.log &> /tmp/errors
C'est particulièrement délicat, car la même commande fonctionnera si elle est exécutée depuis le shell. La raison est que cron
n'a pas la même variable d'environnement PATH
que l'utilisateur.