logrotate não truncará o arquivo original

2

Eu tenho este conf para o meu logrotate:

/tmp/snmp.log {
    daily
    rotate 12
    missingok
    notifempty
    copytruncate
    dateext

}

mas não truncará o arquivo original. ele faz o login, mas continua anexando ao arquivo original.

    
por user60216 03.03.2014 / 03:31

1 resposta

4

Girar um arquivo de log não é suficiente, você tem que dizer ao processo que está escrevendo para ele parar também. Você normalmente pode fazer isso enviando um sinal para o processo, como um HUP.

Exemplo

/var/log/snmpd.log {
    notifempty
    missingok
    postrotate
        /bin/kill -HUP 'cat /var/run/snmpd.pid 2> /dev/null' 2> /dev/null || true
    endscript
}

Isso usará o comando kill para enviar o sinal -HUP (também conhecido como Hang Up) ao daemon SNMP cujo ID de processo está contido no arquivo snmpd.pid .

NOTA1: Mover um arquivo simplesmente realoca o arquivo no disco, mas qualquer descritor de arquivo já atribuído a qualquer processo em execução ainda está ativo e continuará gravando a saída para o novo nome do arquivo, independentemente .

NOTA 2: você também pode usar o comando kill e seu -l para obter uma lista completa dos sinais que você pode enviar para os processos em execução.

O que acontece quando você HUP?

Enviando um processo em execução, como o daemon SNMP, um sinal HUP (também conhecido como. SIGHUP) instrui o processo a recarregar seus arquivos de configuração, normalmente. Quando isso ocorre, o processo abre um arquivo para escrever, digamos, algum arquivo de log.

Ao abrir este arquivo, o daemon usará qualquer nome que esteja configurado para usar no arquivo de configuração. Isso é o que faz com que o daemon comece a gravar no nome original do arquivo de log.

Fazer isso depois que o arquivo de log original for movido para um nome diferente faz com que o daemon se vincule a ele (por meio do descritor de arquivo original). Quando o daemon relê seu arquivo de configuração, ele criará e, em seguida, começará a gravar novas mensagens de log em um novo arquivo de log, deixando o arquivo de log anterior no lugar (sob o nome alterado).

É este comportamento que a rotação de log está explorando.

    
por 03.03.2014 / 04:22

Tags