No meu Ubuntu-Desktop e no meu servidor debian, eu tenho um script que precisa ser executado a cada minuto (um script que chama os minutos do meu espaço online no jogo ).
O problema é que, nos derivativos debian, o cron está registrando /var/log/syslog
cada vez que é executado. Acabo vendo repetida a mensagem que foi executada repetidamente em /var/log/syslog
:
Nov 11 16:50:01 eclabs /USR/SBIN/CRON[31636]: (root) CMD (/usr/bin/w3m -no-cookie http://www.spacetrace.org/secret_script.php > /dev/null 2>&1)
Eu sei que, para suprimir a saída de um programa, posso redirecioná-lo para /dev/null
, por exemplo, para ocultar todas as mensagens de erro e aviso de um programa, posso criar uma linha no crontab como esta
* * * * * root /usr/local/sbin/mycommand.sh > /dev/null
Mas eu gostaria de executar um cronjob e ter certeza de que toda a saída ou erros gerados sejam canalizados para NULL, para que não gere nenhuma mensagem no syslog e nem gere e-mails
EDIT:
existe uma solução para redirecionar os cron-logs para um log separado, como proposto aqui , alterando/etc/syslog.conf
Mas a desvantagem é que, em seguida, TODA a saída de todos os cronjobs é redirecionada.
De alguma forma, posso redirecionar apenas um cronjob único para um arquivo de log separado? De preferência configurável dentro do cron.hourly
próprio arquivo.
MAILTO=""
como a 1ª linha do crontab impedirá qualquer email. Além disso, use o trifecta completo em suas linhas de comando, se você estiver suprimindo toda a saída. Todos os três tipos são redirecionados por esta sequência: >/dev/null 2>&1
- Obviamente, você pode fazer com que o script inclua gravações periódicas em um log separado.
MAILTO=""
no início do arquivo cron. Isso suprimirá todos os emails. E nunca ouvi falar de um daemon cron que envia a saída do trabalho para o syslog (mas acho que é possível).