web-dev-qa-db-fra.com

Le travail cron ne fonctionne pas - erreur postfix / sendmail

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).

2
trueCamelType

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.

6
Lety