>_ josetilabs.com
← blog

08 nov 2026 · linux, logrotate, disco · 4 min

Como evitar que o log encha o disco

Um arquivo de log que cresce sem limite é a causa mais comum de disco cheio em servidor. O logrotate resolve isso rodando uma vez por dia: renomeia o log atual, cria um novo vazio e comprime o antigo. Nesta postagem a regra completa comentada e um teste real onde 1,7 MB de log virou 5,1 KB compactado.

O que o logrotate faz

Ele não apaga log, ele organiza. A cada execução, o arquivo atual vira app.log-20261108 (ou app.log.1) e um arquivo novo e vazio toma o lugar. O antigo pode ser comprimido e, depois de alguns dias, removido. O serviço continua escrevendo no arquivo novo porque o nome é o mesmo, mesmo que o inode tenha mudado.

O detalhe que mais derruba gente: se o serviço mantém o arquivo aberto por descritor, ele segue escrevendo no arquivo renomeado e o disco não libera. Por isso a regra precisa avisar o serviço para reabrir o arquivo. A seção “Se der errado” cobre isso.

A regra completa

text
/var/log/app/app.log {
    daily
    rotate 7
    compress
    delaycompress
    missingok
    notifempty
    create 0640 app app
    dateext
    dateformat -%Y%m%d
    su app app
    postrotate
        /bin/kill -HUP $(cat /run/app.pid 2>/dev/null) 2>/dev/null || true
    endscript
}

Cada linha:

Salve como /etc/logrotate.d/app e teste com logrotate -d /etc/logrotate.d/app (modo debug, não toca em nada).

Como verificar

text
logrotate -f /etc/logrotate.d/app
ls -lh /var/log/app/

Saída esperada: app.log com 0 bytes e um app.log-YYYYMMDD.gz com tamanho bem menor. No teste medido, 1,7 MB virou 5,1 KB.

Terminal com dois painéis: antes o app.log tem 1,7 MB; depois do logrotate -f o app.log tem 0 bytes e o app.log-20261108.gz tem 5,1 KB
Antes e depois da rotação forçada. O log de 1,7 MB virou 5,1 KB compactado.

Se der errado

logrotate ou alternativa

Opção Quando usar Observação
logrotate Serviço escreve em arquivo próprio Padrão do sistema, configuração por arquivo
copytruncate Serviço não aceita sinal de reload Copia e esvazia; pode perder linhas em rotação
journalctl –vacuum-size Logs no systemd journal Não se aplica a arquivo solto
truncate -s 0 Emergência, disco cheio agora Perde o histórico, não rotaciona

FAQ

Preciso de root para rodar logrotate? Não. Use a diretiva su usuario grupo e rode como esse usuário; o diretório de estado (/var/lib/logrotate/status) precisa ser gravável por quem roda.

Com que frequência rodar? Uma vez por dia via cron ou timer do systemd. Mais que isso só se o log crescer muito rápido; nesse caso use size 50M em vez de daily.

O logrotate apaga log automaticamente? Sim, após rotate N arquivos antigos, o mais antigo é removido na próxima rotação.

Posso rotacionar vários arquivos com uma regra? Sim, use curinga: /var/log/app/*.log { ... }. Todos compartilham a mesma regra.

Como ver o que ele faria sem tocar em nada? logrotate -d /etc/logrotate.d/app. O modo debug imprime as decisões e não altera arquivo.

Fontes

Leia também: disco cheio, como achar o culpado, ncdu para achar o que ocupa disco, cron do jeito certo e serviço próprio no systemd.

Leia também

// Por e-mail

Os textos publicados aqui também vão por e-mail. O envio ainda não começou: quem deixar o endereço agora entra na primeira lista.

Guardo só o seu e-mail, a data e o registro desta autorização. Sem cookies, sem rastreador e nada compartilhado com terceiros. Detalhes na política de privacidade.