Logrotate and Open Files

19

Como o logrotate lida com arquivos abertos? Pode logrotate rodar arquivos que um processo tenha aberto?

    
por Kyle Brandt 18.08.2009 / 17:16

3 respostas

5

Para aqueles aplicativos que não aceitam os sinais do logrotate como descrito por Rory, eu uso alguns métodos.

  1. Use a opção copytruncate
  2. Adicione uma instrução pós-rotação para reiniciar o serviço

A decisão de qual usar depende do tamanho dos arquivos de log e da necessidade de logs contínuos. Isso vai ser uma análise de risco da sua parte. No entanto, para dar um exemplo, eu uso uma reinicialização pós-rotação em determinados logs onde eu realmente deveria estar usando um copytruncate. No entanto, os arquivos são muitas vezes vários shows e a cópia pode demorar o suficiente para que perder um segundo ou dois a cada noite seja preferível.

    
por 18.08.2009 / 17:32
13

Parece que eu posso querer o seguinte, mas ainda interessado na experiência de alguém sobre o assunto:

copytruncate
              Truncate  the original log file to zero size in place after cre‐
              ating a copy, instead of moving the old log file and  optionally
              creating  a new one. 
    
por 18.08.2009 / 17:20
5
irá enviar o sinal correto para o processo para dizer-lhe para reabrir os arquivos de log. Funciona fora da caixa para coisas como apache ou mysql.

Você pode ver isso no script postrotate do apache. Se você tem seu próprio daemon e deseja que o logrotate trabalhe com ele, certifique-se de que ele atende a um certo sinal e reabre os arquivos de log.

Se você não puder alterar o programa, poderá ver se o daemon tem uma maneira de limpar automaticamente os logs. Ou adicione um prerotate que pare o servidor e um posttrotate que o inicie novamente.

    
por 18.08.2009 / 17:19