have a script which needs to be executed each minute. The problem is that cron is logging to /var/log/syslog each time it executes. I end up seeing repeated the message it was ececuted over and over in /var/log/syslog
Como nada parece pará-lo, vale a pena perguntar: o que exatamente é este script e o que exatamente é a mensagem que você vê no syslog?
Se a sugestão de slm não funcionou, isso ocorre porque algo está registrando no syslog diretamente - ou cron, como parece estar implícito em alguns de seus comentários, ou então o processo executado pelo cron. As mensagens enviadas para o syslog não vêm de stdin ou stderr, portanto, 2>&1&>
não ajudará.
Pode haver uma maneira de configurar o comportamento do aplicativo em questão, exceto que não sabemos o que é.
Existe certamente uma maneira de configurar a maioria das implementações de syslog contemporâneas (existem várias) para filtrar mensagens de forma muito específica. Por exemplo, se houver uma tag exclusiva usada na mensagem de log, você poderá segmentar isso. Mas, novamente, uma vez que não sabemos nada sobre a mensagem em particular, ou qual syslogd você usa, então não há nada específico que possa ser recomendado.
Meu ponto geral é que, se você não quiser redirecionar / filtrar mensagens porque "isso redirecionará todas as mensagens", você poderá refinar a técnica de filtragem. O encadeamento de falha do servidor vinculado apenas menciona filtragem por facilidade ( *.cron
) - mas você pode configurar filtros mais especializados do que isso.
Debian e Ubuntu ambos têm rsyslog disponíveis. No debian 5+ é o syslog padrão, no ubuntu é uma opção, então você terá que instalá-lo. Para criar um filtro que segmente algum tipo de conteúdo específico, coloque este próximo ao topo (ou seja, antes de qualquer outra regra, mas após a configuração geral, carregamento do módulo, etc) de /etc/rsyslog.conf
. A melhor maneira de fazer isso é não editar o rsyslog.conf
em si, mas criar um arquivo no diretório /etc/rsyslog.conf.d/
, com o nome começando com dois dígitos menores que 50, ou seja, /etc/rsyslog.conf.d/15-my-filter.conf
. Você pode colocar algo assim:
:msg, contains, "/usr/bin/w3m -no-cookie" /dev/null
Isso enviará a mensagem para /dev/null
(ou um log separado, se você preferir). No entanto, a mensagem ainda será passada pelas regras subsequentes que a enviam para /var/log/syslog
. Para evitar isso:
& stop
Imediatamente após essa outra linha. Isso joga fora qualquer coisa que corresponda à regra anterior. Ou, para regras de linha única, basta adicionar stop
ao final dessa linha de regra.
Você precisa reiniciar rsyslogd
depois de alterar a configuração (por exemplo, em sistemas systemd systemctl restart rsyslog
):
kill -HUP $(cat /var/run/rsyslogd.pid)
O HUP faz com que o daemon se reinicie.