Definir MAILTO=user@example.org
em /etc/cron.daily/foo
não funciona. A saída do script não é enviada para user@example.org.
A página em http://www.unixgeeks.org/security/newbie/unix/cron-1.html também sugere uma solução simples:
O arquivo /etc/cron.daily/foo
agora contém o seguinte:
#!/bin/sh
/usr/bin/script 2>&1 | mailx -s "$0" stefanl@example.org
Isso enviará um e-mail para 'stefanl@example.org' com o assunto igual ao caminho completo do script (por exemplo /etc/cron.daily/foo
).
Aqui está o que o Unixgeeks.org diz sobre isso:
Saída do cron
Como eu disse antes, a saída do cron é enviada pelo correio ao proprietário do processo ou à pessoa especificada na variável MAILTO, mas e se você não quiser? Se você deseja enviar a saída para outra pessoa, basta canalizar a saída para o correio de comando. por exemplo
cmd | usuário mail -s "Assunto do email"
Às vezes, eu só quero receber os erros de um cronjob, não do stdout, então eu uso esse truque. A sintaxe pode parecer errada à primeira vista, mas tenha certeza de que funciona. O cronograma a seguir enviará STDOUT para / dev / null e, em seguida, manipulará STDERR por meio do pipeline.
doit 2>&1 >/dev/null | mailx -s "$0" stefanl@example.org
A mesma coisa, mas envie para o syslog:
doit 2>&1 >/dev/null | /usr/bin/logger -t $ME
Veja também minha resposta no ServerFault para Cronjob stderr para arquivo e e-mail
/etc/crontab
não especifica padrões.