Saída de correspondência do cron

2

Eu tenho esse script que eu executo uma vez por mês e quero que a saída seja enviada para o meu e-mail.

Se eu executar manualmente assim, a saída padrão será enviada para o meu e-mail.

./monthly_mail.sh | mail -s "Mail purged" [email protected]

Mas quando adicionei a linha a seguir ao meu crontab , acabei de receber um e-mail em branco. Por que a stdoutput do script não é canalizada para mail ?

* * 2 * * /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]
    
por jaynp 05.11.2013 / 04:30

2 respostas

2

Algumas coisas para tentar.

  1. Corrigir crontab incantation

    Se você está colocando isso no arquivo, /etc/crontab você precisa especificar em qual usuário executar o cron job. Então você deve estar assim:

    * * 2 * * root /var/mail/monthly_mail.sh | /usr/bin/mail -s "Mail purged" [email protected]
    

    Em que root é o usuário no qual o comando será executado. Altere isso conforme necessário.

  2. Teste o correio fora do cron

    Certifique-se de poder executar o comando como o usuário que você pretende ter executando o cron a partir do arquivo /etc/crontab , independente de um shell primeiro, antes de movê-lo para o crontab.

    $ /var/mail/monthly_mail.sh | / usr / bin / mail -s "Mail removido" [email protected]

  3. Verifique a saída de MAILTO

    O Cron normalmente tem um usuário padrão que obtém qualquer saída gerada no STDOUT ou STDERR. Veja se há mensagens de erro sendo enviadas por e-mail para esse usuário, o que pode indicar por que seu comando não está em execução. Este endereço de e-mail é normalmente configurado no cron da seguinte forma:

    [email protected]
    
por 05.11.2013 / 10:41
-1

Outro site sugeriu adicionar 2>&1 antes do | como em:

* * 2 * * root /var/mail/monthly_mail.sh 2>&1 | /usr/bin/mail -s "Mail purged" [email protected]
    
por 09.08.2018 / 17:41

Tags