crontab ainda enviando e-mails mesmo com / dev / null

3

Eu tenho um crontab (root) que executa um script e a saída está definida como > / dev / null, mas sempre recebo os emails sempre que são executados. Eu só quero receber e-mails de erro.

# Rackspace driveclient update (12pm MST)
0 12 * * * /root/scripts/driveclient-update > /dev/null

A única maneira de desativá-lo é usar > / dev / null 2 > & 1 mas depois não receberei emails de erro. Isso está acontecendo em três servidores CentOS diferentes, dois são 6,3 e um é 6,4.

NOTA : li repetidamente que > / dev / null deve enviar o stdout para lá e evitar o e-mail se não houver nada além do stdout do script, então funciona para pelo menos algumas pessoas; Não consigo descobrir por que não está funcionando nesses servidores.

Aqui está um exemplo de onde > / dev / null deve funcionar:

link

    
por user2344668 09.05.2014 / 22:39

4 respostas

0

Eu descobri que wget e yum enviavam stdout para stderr, então eu tive que canalizar tudo para os arquivos de log.

    
por 11.06.2014 / 17:01
3

Defina MAILTO="[email protected]" no arquivo crontab. E deixe seu script ' echo ' stderr ou stderr quando as exceções são lançadas por um $ (subshell) . Tudo pode acontecer, então trabalhe com valores de retorno (0 é OK, qualquer outra coisa é uma exceção) como neste exemplo:

#!/bin/bash
return=$(/usr/bin/curl --silent --show-error --fail "http://server/somestate" 2>&1)
exitcode=$?
if [ $exitcode != 0 ]
then
    echo "ERROR $HOSTNAME $0 $exitcode $return"
    logger "ERROR $HOSTNAME $0 $exitcode $return"
    exit $exitcode
else
    logger "INFO $HOSTNAME $0 $exitcode $return"
    exit 0
fi
    
por 23.05.2014 / 06:48
1

> apenas redireciona std out / err, o e-mail é uma função interna do script mais parecido. verifique o script -h para parâmetros opcionais ou documentos do utilitário rackspace

    
por 09.05.2014 / 23:05
0

Para referência posterior. Você não precisa enviar tudo para um arquivo de log. É possível dizer ao bash para também enviar saída no STDERR para / dev / null.

# Rackspace driveclient update (12pm MST)
0 12 * * * /root/scripts/driveclient-update > /dev/null 2>&1

Observe que tudo o que fiz foi acrescentar 2>&1 ao final do arquivo.

    
por 07.10.2015 / 21:38