Como parar o email de saída mensal do cron

3

O servidor é Debian 6.0. Em / etc / aliases eu tenho;

root: [email protected]

Isso é para que os e-mails raiz sejam enviados diretamente para mim. Hoje, um script mensal que eu coloquei no /etc/cron.monthly me enviou por email. É um script bastante simples que se parece com isso;

#!/bin/bash
cd /a/directory
rm -rf ./*
wget http://www.site.com/fresh-copy.zip
unzip fresh-copy.zip
rm fresh-copy.zip

O email que recebi está abaixo;

**Subject**: Cron <root@myserver> test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
**From**: [email protected]
**Body**:

    /etc/cron.monthly/speedtest:
--2013-03-01 06:52:01--  http://www.site.com/fresh-copy.zip
Resolving www.site.com... 11.22.33.44
Connecting to www.site.com|11.22.33.44|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 99763924 (95M) [application/zip]
Saving to: 'fresh-copy.zip'

     0K .......... .......... .......... .......... ..........  0% 11.7M 8s
    50K .......... .......... .......... .......... ..........  0% 11.3M 8s
   100K .......... .......... .......... .......... ..........  0% 11.4M 8s
        *CUT OUT FOR BREVITY*
 97350K .......... .......... .......... .......... .......... 99% 16.9M 0s
 97400K .......... .......... .....                           100% 11.6M=9.7s

2013-03-01 06:52:11 (9.78 MB/s) - 'fresh-copy.zip' saved [99763924/99763924]

Archive:  fresh-copy.zip
  inflating: file1.ext
  inflating: file2.ext
  inflating: file3.ext
  inflating: file4.ext
  inflating: file5.ext

A única saída neste email é do comando wget e unzip . Eu posso editar o script e colocar > /dev/null no final nessas duas linhas, mas essa é realmente a melhor maneira de fazer isso? Se eu adicionar mais comandos ao script que produza saída, sempre terei que adicionar > /dev/null a cada linha. Existe uma maneira de desabilitar a notificação por e-mail da saída deste script do cron?

    
por jwbensley 01.03.2013 / 10:37

4 respostas

2

Um método mais fácil é, em vez de adicionar o script ao diretório cron.monthly, adicioná-lo a um crontab antigo, no qual você pode especificar na linha crontab que deseja que a saída vá para / dev / null. Assim:

crontab -e

para editar o crontab. Em seguida, adicione a seguinte linha:

@monthly /path/to/script > /dev/null

Isso significará que o STDOUT será redirecionado para / dev / null, mas o STDERR ainda será encerrado em um email. Se você não quer receber e-mails com erro, a linha deve ficar assim:

@monthly /path/to/script > /dev/null 2>&1
    
por 01.03.2013 / 10:56
6

Recomendamos que você continue usando > /dev/null em seu script (ou use a opção -q para wget e unzip ). Dessa forma, se um dos comandos lançar erros, eles ainda serão enviados por e-mail para você, mas a saída normal será suprimida.

    
por 01.03.2013 / 10:44
2

Eu tenho usado cronic por um tempo, nunca falhou comigo.

Essencialmente, é um script wrapper para o seu cron, que somente lhe enviará um email se houver um código de retorno de erro, ou se houver algo no stderr. Dessa forma, você não recebe spam toda vez que o cron é executado, mas ainda é notificado quando algo está errado.

Para usá-lo, baixe o script cronic e mude seu comando cron de (por exemplo)

* * * * * awesome_command

para

* * * * * /path/to/cronic awesome_command
    
por 01.03.2013 / 10:58
1

Se você quiser "silenciar" somente este script, você pode colocar /dev/null 2>&1 no final da linha chamando seu arquivo no arquivo crontab. Com este método você não pode colocar seu script na pasta mensal, você precisa editar o arquivo crontab com:

contab -e

Ou você pode editar a configuração do cron e remover seus e-mails dela. Cada coisa é explicada aqui .

    
por 01.03.2013 / 11:03

Tags