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.