O trabalho do Cron não está em execução - erro postfix / sendmail

2

Aqui está o meu conteúdo de sudo crontab -e

    @hourly /home/userName/ntpdate.sh

O conteúdo do meu script (ntpdate.sh) //.25 é o meu servidor ntp

     echo "Current time is $(date), " >> /home/userName/ntpdateLog.txt
     ntpdate -u 192.168.1.25 >> /home/userName/ntpdateLog.txt

Quando eu simplesmente executo o comando sozinho, ou executo o script sozinho, ele funciona bem e gera saídas para o arquivo. O script tem permissões corretas para ser executado.

O erro que estou recebendo em / var / log / syslog é este:

    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

Por que há um erro de email quando o script não precisa de email (que eu saiba).

Eu sei que o ntpdate está obsoleto, mas é a única coisa que faz o que eu preciso agora (supondo que eu possa fazer o cron rodá-lo).

    
por trueCamelType 21.07.2014 / 20:24

1 resposta

5

De acordo com o manual do 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)

Se você quiser interromper o alerta de e-mail, você deve redirecionar a saída padrão e o erro padrão.

Então você deve modificar seu arquivo cron como:

  @hourly /home/userName/ntpdate.sh >> /home/userName/ntpdateLog.txt 2>&1

e seu script:

  echo "Current time is $(date), "
  ntpdate -u 192.168.1.25

Outra maneira de fazer isso é dar um valor vazio para a variável MAILTO no topo do seu arquivo cron:

  MAILTO=""
  @hourly /home/userName/ntpdate.sh >> /home/userName/ntpdateLog.txt 2>&1

Sugiro que você redirecione a saída std e o erro std em qualquer caso, pois é mais fácil depurar o script em caso de erros.

Aqui está o manual do crontab para mais detalhes.

    
por Lety 22.07.2014 / 00:39