Eu tenho um script que precisa ser executado a cada minuto. O problema é que o cron está conectado a /var/log/syslog
cada vez que é executado. Acabo vendo algo assim repetido várias vezes em /var/log/syslog
:
Jun 25 00:56:01 myhostname /USR/SBIN/CRON[1144]: (root) CMD (php /path/to/script.php > /dev/null)
Estou usando o Debian.
Minhas perguntas são: Existe alguma maneira de dizer ao cron para não gravar essas informações no syslog toda vez?
Respostas:
Você pode enviar a saída do cron para um recurso de log separado e adicionar o seguinte ao seu
/etc/syslog.conf
arquivo:Lembre-se de adicionar
/var/log/cron
ao seu/etc/logrotate.d/syslog
para garantir que ele seja girado, por exemplofonte
Está bem,
A solução para minha pergunta foi:
mudança
para
dentro
/etc/syslog.conf
e, em seguida, reinicie o syslogTambém tenho o cron sendo enviado
/var/log/cron.log
conforme sugerido por Dave Cheney e colado um logrotate nele. Minha correção com a sugestão de Daves é ideal para minha situação porque:/var/log/syslog
ser confuso com mensagens cron/var/log/cron.log
ir muito grande.fonte
rsyslog
no Debian 8.0 Jessie, então é o que/etc/rsyslog.conf
deve ser editado. A propósito, as strings a serem adicionadas já estão lá por padrão, você precisa apenas descomentá-las (linha 63). E/var/log/cron.log
já está no/etc/logrotate.d/syslog
, assim como os mantenedores de pacotes leram este tópico.Is there any way I can tell cron not write this information to syslog every time
. Esta não é a resposta.Altere / etc / default / cron
Por padrão, a linha EXTRA_OPTS é ""
fonte
No Ubuntu 14.04.5 (e provavelmente em outro lugar), existe o rsyslogd em vez do syslogd. O TranslucentCloud sugeriu isso com o Debian Jessie, mas a mesma solução (mas alterar o rsyslog.conf em vez do syslogd.conf) não parece funcionar no Ubuntu.
Parece que os valores definidos no /etc/rsyslog.d/50-default.conf terão precedência sobre os itens definidos no /etc/rsyslog.conf, portanto, é melhor fazer as alterações lá e reiniciar o rsyslog e o cron. Caso contrário, você ainda terminará com o comportamento padrão de registrar o cron no syslog, além de registrar o cron no cronlog (mas não exclusivamente).
Primeiras linhas no meu /etc/rsyslog.d/50-default.conf:
E pronto!
fonte
Eu apenas resolvi isso de uma maneira diferente, mas meu objetivo era um pouco diferente. Eu queria descartar as entradas do cron que foram geradas quando o atrun foi acionado para que meus discos rígidos pudessem dormir e não serem acordados a cada 5 minutos.
Você pode fazer com que o destino de um evento de log no syslog.conf seja um comando shell, prefixando-o com o pipe e, portanto, usei o grep para jogar fora os que não queria. Tão:
Não investiguei, mas acredito que deve ser possível enviar essas entradas de log para outro destino, se elas ainda forem desejadas.
fonte
Na verdade, a solução 'melhor' (alguém poderia afirmar) é uma combinação do que o @DaveCheney sugeriu e o que o user7321 fez eventualmente , além de uma terceira ação que eu recomendaria:
No seu caso
/etc/syslog.conf
, a combinação dessas sugestões muda algo como o seguinte:para dentro:
E não se esqueça de recarregar à força (ou reiniciar) os serviços cron e syslogd, por exemplo, usando:
Nota: Isso funciona com o rsyslogd também.
fonte