Registrando TODAS as saídas stderr do crontab para o arquivo

10

Por exemplo, posso registrar stderr de um script dessa maneira:

* * * * * run_script.sh > /var/log.txt 2>&1

Mas eu quero registrar stderr de todos os scripts no meu crontab. Eu posso acrescentar > /var/log.txt 2>&1 a todos os scripts, mas não é bom se eu tiver centenas de scripts em cron . Existe outra maneira mais simples de fazer isso?

    
por Maslov Anton 23.01.2012 / 07:36

2 respostas

5

 Any output produced by a command is sent to the user specified in the
 MAILTO environment variable as set in the crontab(5) file or, if no
 MAILTO variable is set (or if this is an at(1) or batch(1) job), to the
 job's owner.  If a command produces no output or if the MAILTO
 environment variable is set to the empty string, no mail will be sent.

Como ele usa o correio local, você realmente não precisa configurar nada, ou talvez apenas instale o mailx, se ainda não estiver aqui. Cron irá enviar-lhe a saída, você pode salvar o e-mail em um arquivo e fazer muitas coisas de lá. Tentar modificar a maneira como o cron funciona para atender diretamente a sua necessidade não é o caminho a percorrer. Se você não pensa assim, apenas atualize e re-buil o cron, chame-o my_cron e use-o ao invés do cron. E esteja preparado para manter seu my_cron atualizado e reconstruí-lo com frequência.

Adicione isto no começo de todos os seus scripts para registrar tudo e parar no primeiro erro

exec 2>&1 > /var/log/YOUR_LOG_FILE
set -e
    
por 23.01.2012 / 08:15
4

No crontab, você pode definir MAILTO para apontar para um alias de correio que executa um script. Esse script aceitaria uma mensagem de e-mail, retiraria os cabeçalhos e outro goop e registraria o restante com o registrador. Como toda a saída do script cron é enviada para o endereço especificado pelo MAILTO, você capturaria tudo.

Exemplo: no crontab

MAILTO=myalias

Em / etc / mail / aliases (supondo que você esteja usando o sendmail)

myalias:"|/usr/local/bin/my-processing-script.sh"

e mande o script remover os cabeçalhos de e-mail e processar a saída do cron.

    
por 23.01.2012 / 08:14