Redirecionar saída crontab para email

3

Parece simples, mas como eu posso redirecionar a saída deste tipo de crontab para o meu e-mail?

00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1

Eu tentei adicionar [email protected], mas sem resultados.

Atenciosamente

    
por Frida 27.01.2013 / 23:06

1 resposta

5

A entrada do cron que você tem lá está redirecionando os arquivos STDOUT e STDERR para um arquivo: /var/log/CRONLOGS/testing_prod.log .

O método mais simples para fazer o que você quer seria executar mailx no final do cron job, usando indireto para enviar esse arquivo:

00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1; mailx -s "Cron output" [email protected] < /var/log/CRONLOGS/testing_prod.log

No entanto : observe que o trabalho do cron está anexando ao arquivo de log, portanto, a menos que ele seja removido de entradas antigas (ou giradas) regularmente, você receberá todas as saídas anteriores, bem como novas saídas. Provavelmente seria melhor criar um script de shell pequeno para gravar em um log temporário, enviá-lo por email e, em seguida, anexá-lo ao log de email:

#!/bin/sh
/usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /tmp/testing_prod$$.log 2>&1
mailx -s "Cron output" [email protected] < /tmp/testing_prod$$.log
cat /tmp/testing_prod$$.log >> /var/log/CRONLOGS/testing_prod.log
rm /tmp/testing_prod$$.log

Isso tem a vantagem de tornar o crontab mais organizado:

00 06 * * * /home/user/myapp/cronscript.sh
    
por 27.01.2013 / 23:45