Voici mon contenu de Sudo crontab -e
@hourly /home/userName/ntpdate.sh
Le contenu de mon script (ntpdate.sh) //.25 est mon serveur ntp
echo "Current time is $(date), " >> /home/userName/ntpdateLog.txt
ntpdate -u 192.168.1.25 >> /home/userName/ntpdateLog.txt
Lorsque j'exécute simplement la commande par elle-même ou le script par lui-même, tout fonctionne correctement et s'affiche dans le fichier. Le script dispose des autorisations appropriées pour s'exécuter.
L'erreur que je reçois dans/var/log/syslog est la suivante:
CRON[6386]: (root) MAIL (mailed 1 byte of output; but got status 0x004b, #012)
postfix/sendmail[6410]: fatal: open /etc/postfix/main.cf: No such file or directory
Pourquoi y a-t-il une erreur de courrier lorsque le script n'a pas besoin de courrier (à ma connaissance)?.
Je sais que ntpdate est obsolète, mais c’est la seule chose qui fait ce dont j’ai besoin pour le moment (en supposant que je puisse obtenir cron pour l’exécuter).
Selon manuel cron :
When executing commands, any output is mailed to the owner of the
crontab (or to the user named in the MAILTO environment variable in the
crontab, if such exists)
Si vous souhaitez arrêter l'alerte mail, vous devez rediriger la sortie standard et l'erreur standard.
Vous devriez donc modifier votre fichier cron comme suit:
@hourly /home/userName/ntpdate.sh >> /home/userName/ntpdateLog.txt 2>&1
et votre script:
echo "Current time is $(date), "
ntpdate -u 192.168.1.25
Une autre façon de faire est de donner une valeur vide à la variable MAILTO en haut de votre fichier cron:
MAILTO=""
@hourly /home/userName/ntpdate.sh >> /home/userName/ntpdateLog.txt 2>&1
Je vous suggère de rediriger la sortie std et l'erreur std dans tous les cas, car il est plus facile de déboguer le script en cas d'erreur.
Voici manuel de crontab pour plus de détails.