Somente e-mail sobre erros cron para trabalhos em cron.daily, cron.hourly, etc

7

Eu tenho várias tarefas agendadas que são executadas (em /etc/cron.daily , /etc/cron.hourly , /etc/cron.weekly , etc.) e e-mail root@localhost com os resultados. Eu gostaria de parar esses e-mails se os trabalhos estão tendo sucesso, e apenas e-mail em erro (o que eu entendo pode ser feito redirecionando stdout para /dev/null ). Entendo como fazer isso para tarefas agendadas individuais, mas os scripts nesses diretórios especiais são executados usando run-parts . Qual é a melhor maneira de suprimir e-mails de sucesso para esses scripts?

    
por jrdioko 29.05.2011 / 03:15

3 respostas

5

Você pode querer usar um dos wrappers para os programas, que produzem tudo quando algo vai mal e engolem o stdout de outra forma.

Um exemplo pode ser cronic , apenas prefixar 'cronic' em 'run-parts', por exemplo:

# m h dom mon dow user  command
 17 *  *   *   *  root  cd / && /etc/cronic run-parts --report /etc/cron.hourly

onde /etc/cronic é um lugar com script crônico executável, baixado do site mencionado.

    
por 18.06.2014 / 22:24
5

Você deve enviar notificações de e-mail bem-sucedidas para /dev/null para que elas desapareçam.

Mas você deseja ver as notificações de e-mail sem êxito .

Isso significa que você precisa primeiro direcionar stdout para /dev/null e, em seguida, direcionar /dev/stderr para stdout

tente alterar a parte de redirecionamento dos seus cronjobs para

>/dev/null 2>&1

Veja este link

    
por 29.05.2011 / 03:29
1
  • Se o script for bem comportado, ele gravará apenas em STDOUT se com sucesso, e para STDERR no caso de haver um erro.
  • Por padrão, o cron enviará por e-mail tudo o que o script gravar STDOUT ou STDERR ( Wiki do Arch ).

Então, se você quiser manter as notificações de erro, não redirecione STDERR , apenas STDOUT :

COMMAND > /dev/null

Se você fizer o típico >/dev/null 2>&1 , estará efetivamente suprimindo ambos ( documentação do bash ).

  1. Torne o descritor de arquivo stdin uma cópia de / dev / null.
  2. Torne o descritor de arquivo stderr uma cópia de stdout (que já apontou para / dev / null).
por 02.09.2015 / 11:13