Duas sugestões:
-
Registre um relatório de bug em
mailman
, para que o desenvolvedor possa corrigir o bug para todos. -
Altere a chamada
synch_members
parasynch_members | egrep -v "Nothing to do."
Isso eliminará o "Nada a fazer". mensagens.
Problema concreto:
Mailman vem com um script para sincronizar os assinantes da lista de discussão a partir de um arquivo simples (sync_members(8) ).
Este script não adere muito bem à Regra de silêncio . Por exemplo, quando não há nada para fazer (por exemplo, os assinantes atuais e o arquivo simples são os mesmos), ele imprime "Nada a fazer". para stdout
.
Como estamos executando este programa a cada poucos minutos e qualquer saída é registrada em nosso servidor de log (com rsyslogd ) que, em seguida, envia e-mails diários com os registros, tendem a conter muitas mensagens inúteis.
Existem várias maneiras de lidar com isso e estou me perguntando qual é a mais apropriada:
stdout
a /dev/null
. sync_members
para aderir à regra do silêncio. sync_members
, modifique a cópia e use-a a partir de agora. Enquanto cada um alcançaria o resultado desejado, cada um tem suas desvantagens:
stdout
? Eu costumo escolher a opção 2, mas se eu tiver que fazer isso para cada programa mal comportado em nosso sistema ...
O que você acha? Existe uma opção adicional ou argumento a favor ou contra? Existe uma melhor prática para este caso (eu diria que este problema não é novo)?
Duas sugestões:
Registre um relatório de bug em mailman
, para que o desenvolvedor possa corrigir o bug para todos.
Altere a chamada synch_members
para synch_members | egrep -v "Nothing to do."
Isso eliminará o "Nada a fazer". mensagens.
Você está com a opção 5 ausente: escrever um script de wrapper que redireciona a saída de sync_members
e verifica se é ou não "nada a fazer".
Com a verificação correta do código de saída, isso pode fazer o trabalho muito bem. É uma atualização relativamente segura - contanto que a mensagem "nada" não mude, seu script não precisa ser mantido.
E você pode decidir como lidar com casos de erro nesse script (ou seja, apenas cat
do arquivo de log ou fazer algo mais interessante).
Se "Nothing to do" não varia (ou pode ser reduzido a um regex), você pode usar o grep assim:
grep -v "Nothing to do" *.log
A partir daqui, há muitas coisas que você pode fazer para resolver seu problema:
cron
jobs que automatizarão a execução de tais comandos em intervalos regulares. Muito poderia ser feito com as ferramentas básicas do Unix e um shell moderno. Acho que é um pouco cedo demais para decidir modificar um código-fonte. Mantê-lo simples, evitará muito tempo perdido.