Se você não quiser que este processo seja tratado por abrtd, adicione-o à lista negra abrtd em este arquivo conf . O Imuxsock está limitando a quantidade de registro porque a limitação de taxa está ativada. Uma vez que o limite é atingido, o abrt não registrará mais o nome do processo real, porque ele foi avisado para não fazer isso, portanto, como o processo ainda está sendo executado, abrt é exibido como uma substituição. Veja este blog . Você pode considerar o uso do Squid
Atualizar
Para entender esta seção de atualização, você precisa ler em Multiplexing , especificamente:
In computer programming, it may refer to using a single in-memory resource (such as a file handle) to handle multiple external resources (such as on-disk files).
O identificador de arquivo para o seu processo incorreto é canalizado para esse recurso de memória. Em circunstâncias normais, a maioria dos serviços e processos para esse assunto tem um código de saída. Uma vez atingido o limite de taxa, o socket immux transfere o controle para o rsyslog para escrever a linha:
o imuxsock começa a abandonar as mensagens do pid 4808 devido a limitação de taxa
Nesse ponto, abrt assume que o processo incorreto terá saído com um código de saída anormal e grava o processo problemático e qualquer saída para /var/spool/abrt/pyhook-(time_date)
. Como o script não tem código de saída, na próxima gravação de log, o rsyslog captura o que estiver no buffer do imuxsocket, mas como o buffer de soquete nunca foi esvaziado - veja a etapa 5, porque o processo ainda está em execução, você cria um problema de buffer ... Os hackers geralmente transformam essas situações em estouros de buffer. Essas etapas ocorrem na seguinte ordem:
- O Imuxsock reporta ao rsyslog que o processo 4808 não deve ser informado.
- O abrtd está configurado para relatar qualquer comportamento estranho e inicia
- O rsyslog respeita a solicitação.
- Seu script, sob o pid 4808, continua escrevendo no log, sem informar código de saída, porque você o projetou dessa maneira.
- abrtd percebendo que não pode fornecer um código de saída para o rsyslog faz o seguinte (porque o seu processo não sai):
Aug 27 07:02:55 proxy1 abrtd: Deleting problem directory '/var/spool/abrt/pyhook-2014-08-27-07:02:55-4808'
Se o código de saída tivesse sido informado, o abrtd enviaria um relatório de bug para você, se configurado para isso. Veja a página man abrtd , e você veria o conteúdo de /var/spool/abrt/pyhook-2014-08-27-07:02:55-4808
6. rsyslog, porque está honrando o passo 2, não pode reportar o processo 4808 busca o item mais recente no buffer de imux, que por acaso é o abrt process, porque abrt ainda está esperando um código de saída do passo 5, mas desde o passo 5 nunca concluído .....
Em termos de programação, isso é chamado de condição de corrida. O programa que você escreveu está preenchendo o buffer de log mais rápido do que o buffer de log pode gravar a saída. Como tal:
- defina SysSock.RateLimit.Interval > 5 segundos e SysSock.RateLimit.Burst > 200
- defina SysSock.RateLimit.Interval = 0 e confunda seu log.
- reescreva seu programa com parâmetros para definir a verbosidade
- execute seu script como um serviço e coloque-o na lista negra nas configurações abrtd