Rain WikiWindows · Linux · Android

logrotate

ServiçoA maioria das distribuições Linux

logrotate é um utilitário do Linux que rotaciona, compacta e remove arquivos de log para que eles não ocupem todo o disco. Ele geralmente é executado uma vez por dia por um timer do systemd ou tarefa do cron e lê o /etc/logrotate.conf, além das regras por pacote em /etc/logrotate.d/.

1Uma regra típica

Uma regra nomeia um ou mais arquivos de log e diretivas como daily ou weekly (frequência), rotate 7 (quantos arquivos antigos manter), compress (compacta arquivos antigos com gzip), missingok (sem erro se o arquivo estiver ausente), notifempty (pula logs vazios) e postrotate ... endscript (um comando para executar após a rotação, por exemplo, para reabrir o log).

2copytruncate

Alguns programas continuam escrevendo no mesmo arquivo aberto. O copytruncate copia o log e então trunca o original em vez de movê-lo, para que o programa mantenha seu descritor de arquivo; algumas linhas escritas durante a cópia podem ser perdidas.

3Testando

logrotate -d /etc/logrotate.conf é executado em modo de depuração e apenas imprime o que aconteceria. -f força uma rotação mesmo que não esteja no prazo.

Como adicionar e testar uma regra

  1. Crie /etc/logrotate.d/myapp com o caminho do log e as diretivas, por exemplo, weekly, rotate 4, compress, missingok, notifempty.
  2. Simulação: sudo logrotate -d /etc/logrotate.d/myapp
  3. Se a saída parecer correta, force uma rotação: sudo logrotate -f /etc/logrotate.d/myapp
  4. Verifique o resultado: ls -l no diretório de log.

Cuidados

  • Um padrão de caminho incorreto pode rotacionar ou excluir logs de outros programas.
  • Logs gerenciados pelo journal do systemd são limitados em journald.conf, não pelo logrotate.

Fontes

  1. logrotate(8) man7.org
  2. logrotate(8) (Debian) manpages.debian.org

Última revisão: