Base de Conhecimento

Logrotate na VPS: como controlar o tamanho dos logs

  • logrotate, logs, vps, ubuntu, linux, systemd
  • Usuários acharam útil: 0

Aprenda a usar o logrotate na VPS: como ele roda no Ubuntu 24.04, os arquivos de configuração, as diretivas, a regra de um app, o teste seguro e o journal.

Por Redação Eleven Host · @robson.direitodigital · 31 de outubro de 2026 · 8 min de leitura

Arte da Eleven Host: janela de terminal com o título: Logrotate na VPS: como controlar o tamanho dos logs

Capa da Redação Eleven Host para o guia: Logrotate na VPS: como controlar o tamanho dos logs Arte: Eleven Host

O logrotate é a ferramenta que gira, compacta e apaga logs antigos para que eles não encham o disco. Em vez de um arquivo de log que só cresce, ele guarda um número definido de cópias antigas e descarta as mais velhas.

Este guia mostra como o logrotate roda no Ubuntu 24.04, quais arquivos ele lê, as diretivas mais úteis, como escrever a regra de um app seu, como testar sem estragar nada e o que fazer com o journal do sistema, que tem limites próprios. Quem administra uma VPS (veja o guia de servidor VPS para iniciantes) pode ter logs de aplicações para controlar, e é para isso que a regra serve. Os nomes dos exemplos, como meu-app e usuario, são fictícios. As descrições seguem as páginas de manual do Ubuntu 24.04 (noble), com o logrotate na versão 3.21.0.

Como o logrotate roda no Ubuntu 24.04

No Ubuntu 24.04, quem dispara o logrotate é um timer do systemd, o logrotate.timer. Ele chama o logrotate.service, que executa /usr/sbin/logrotate /etc/logrotate.conf. O timer está configurado como OnCalendar=daily, com AccuracySec=1h e Persistent=true. Como a precisão é de uma hora, o horário exato da execução varia dentro de uma janela, e este guia não cita um horário.

O pacote também instala o script /etc/cron.daily/logrotate, mas ele desiste quando há systemd: o próprio arquivo traz o comentário "skip in favour of systemd timer". Então, nessa versão do Ubuntu, o caminho é o timer, e não o cron. Para ver o timer, use:

systemctl list-timers logrotate.timer

systemctl status logrotate.timer

O guia de systemctl: como iniciar, parar e ver serviços na VPS explica esses comandos com mais calma.

O logrotate é executado uma vez por dia. Quem decide se um log gira naquela execução é a diretiva da regra, como daily, weekly ou size.

Os arquivos do logrotate

Três lugares importam:

  • /etc/logrotate.conf: o arquivo principal. No Ubuntu ele vem com weekly, su root adm, rotate 4 e create. As linhas #dateext e #compress vêm comentadas, isto é, desligadas. No fim há include /etc/logrotate.d.
  • /etc/logrotate.d/: a pasta em que cada programa coloca a sua regra. O comentário do próprio arquivo principal diz "packages drop log rotation information into this directory". A regra do seu app vai aqui.
  • /var/lib/logrotate/status: o arquivo de estado, onde o logrotate anota a última rotação. Esse é o caminho padrão, e a opção -s (ou --state) permite usar outro.

A lista de arquivos do pacote logrotate no Ubuntu 24.04 inclui as regras /etc/logrotate.d/btmp e /etc/logrotate.d/wtmp. Outros programas, como o rsyslog, trazem a regra deles para a mesma pasta. A do rsyslog usa weekly, rotate 4, missingok, notifempty, compress, delaycompress e sharedscripts, com um postrotate. Ler uma regra pronta é um bom jeito de aprender o formato.

Quer conhecer a VPS da Eleven Host? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Conhecer a VPS

As diretivas que importam

A página de manual do logrotate.conf descreve várias diretivas. Estas são as que a regra de um app pode usar, explicadas em uma linha cada:

Quando girar

  • daily, weekly, monthly: gira uma vez por dia, uma vez por semana, ou na primeira execução do logrotate no mês.
  • size N: gira só se o arquivo passar de N bytes. Aceita k, M e G, como em size 100M.
  • maxsize N: gira quando o arquivo passa do tamanho, mesmo antes do intervalo de tempo que você também indicou.
  • minsize N: gira quando o arquivo passa do tamanho, mas não antes do intervalo de tempo indicado.

O que guardar e como

  • rotate N: guarda N cópias antigas antes de remover a mais velha.
  • maxage N: remove os logs girados com mais de N dias.
  • compress: compacta as cópias antigas, com gzip por padrão.
  • delaycompress: adia a compactação para o ciclo seguinte, então a cópia mais recente fica sem compactar.
  • dateext: usa a data no nome em vez de um número. O formato padrão é -%Y%m%d, que dá nomes como app.log-20261031.

O que fazer com o arquivo

  • missingok: se o log não existir, segue para o próximo sem mostrar erro.
  • notifempty: não gira o log se ele estiver vazio.
  • create modo dono grupo: cria o arquivo novo logo depois da rotação e antes do postrotate, como em create 0640 usuario adm. O modo é em octal, e os atributos podem ser omitidos.
  • su usuario grupo: gira os logs com esse usuário e grupo, em vez do usuário e grupo padrão.
  • copytruncate: copia o log e esvazia o original, para programas que não conseguem fechar o próprio arquivo de log.

Scripts e outros arquivos

  • postrotate ... endscript: roda um script depois da rotação, por exemplo para avisar o programa que reabra o log.
  • sharedscripts: roda os scripts uma só vez, mesmo que vários logs combinem com o padrão com curinga.
  • include: lê outro arquivo ou pasta no ponto em que aparece.

Criar a regra do seu app

Suponha um app fictício que grava logs em /var/log/meu-app/, com arquivos terminados em .log. Abra um arquivo novo na pasta de regras. Se precisar de ajuda com o editor, o guia do editor nano para editar arquivos na VPS pelo terminal mostra os atalhos:

sudo nano /etc/logrotate.d/meu-app

E escreva a regra. Este bloco foi montado com as opções documentadas:

/var/log/meu-app/*.log {

daily

rotate 14

compress

delaycompress

missingok

notifempty

create 0640 usuario adm

sharedscripts

postrotate

systemctl reload meu-app > /dev/null 2>&1 || true

endscript

}

Lendo de cima para baixo: o padrão /var/log/meu-app/*.log escolhe os arquivos. O log gira por dia, guarda 14 cópias antigas, compacta as cópias (menos a mais recente), ignora arquivo ausente ou vazio e cria o novo com modo 0640, dono usuario e grupo adm. No postrotate, o exemplo manda o systemd recarregar o serviço meu-app.

postrotate ou copytruncate

O postrotate com systemctl reload só serve se o seu serviço souber reabrir o arquivo de log quando recebe o reload. Se ele não souber, troque o bloco postrotate pela diretiva copytruncate. Ela tem um risco que a própria documentação aponta: há um intervalo muito pequeno entre copiar o arquivo e esvaziá-lo, então algumas linhas de log podem ser perdidas. Escolha sabendo disso.

Se o logrotate recusar a pasta

Se a pasta do log tiver permissão de escrita para um usuário que não é root, o logrotate pode recusar a rotação. A diretiva su usuario grupo, dentro do bloco, é a que a documentação oferece para essa situação.

Testar sem estragar

Teste a regra antes de confiar nela. As opções da linha de comando, segundo a página de manual do logrotate, são três:

  • -d (ou --debug): nenhuma alteração é feita nos logs e o arquivo de estado não é atualizado. É o teste seguro.
  • -f (ou --force): força a rotação, mesmo que o logrotate ache que ela não é necessária.
  • -v (ou --verbose): mostra mensagens durante a rotação.

O roteiro é rodar primeiro o -d, ler o que ele diz que faria e só depois forçar uma rotação de verdade:

sudo logrotate -d /etc/logrotate.d/meu-app

sudo logrotate -v -f /etc/logrotate.d/meu-app

cat /var/lib/logrotate/status

O primeiro comando simula. O segundo gira de fato os logs da regra, com mensagens na tela, e o terceiro mostra o arquivo de estado em que o logrotate anota a última rotação. Depois da rotação forçada, olhe a pasta do app e confira se os arquivos antigos aparecem como você esperava.

E o journal do sistema?

O journal do systemd, que você lê com o journalctl, não é controlado pelo logrotate. A lista de arquivos do pacote logrotate no Ubuntu 24.04 traz regras só para btmp e wtmp, sem uma regra do journal. O journald limita o próprio espaço com opções como SystemMaxUse=, SystemKeepFree=, SystemMaxFileSize= e MaxRetentionSec=.

Segundo a página de manual do journald, o SystemMaxFileSize= tem como padrão um oitavo do SystemMaxUse=, até 128M, e o MaxRetentionSec= tem padrão 0, que significa desligado. Esses limites são aplicados pelo próprio journald, que apaga apenas arquivos já arquivados. Mudanças locais vão em arquivos /etc/systemd/journald.conf.d/*.conf.

Para ler o journal, o guia do journalctl para ver os logs do sistema na VPS mostra os comandos.

Comandos para guardar

  • systemctl list-timers logrotate.timer mostra o timer que dispara o logrotate.
  • /etc/logrotate.conf é o arquivo principal, e as regras dos programas ficam em /etc/logrotate.d/.
  • cat /var/lib/logrotate/status mostra o arquivo de estado.
  • sudo logrotate -d /etc/logrotate.d/meu-app simula, sem mudar logs nem estado.
  • sudo logrotate -v -f /etc/logrotate.d/meu-app força a rotação, com mensagens.
  • postrotate só serve se o serviço reabrir o log; senão, copytruncate, aceitando a possível perda de algumas linhas.
  • O journal tem limites próprios no journald, e não no logrotate.

Procura um servidor para os seus serviços? VPS a partir de R$ 17,00/mês no Plano Bronze; confira na loja o que cada plano inclui. Ver planos de VPS

Perguntas frequentes

O que o logrotate faz?

Gira, compacta e apaga logs antigos conforme as regras que você define, para os arquivos não encherem o disco.

Como o logrotate é executado no Ubuntu 24.04?

Pelo logrotate.timer do systemd, uma vez por dia. O script do cron.daily existe, mas sai sem fazer nada quando há systemd.

Onde coloco a regra do meu app?

Em um arquivo dentro de /etc/logrotate.d/, como /etc/logrotate.d/meu-app. O /etc/logrotate.conf inclui essa pasta.

Como testar a regra sem mexer nos logs?

Com sudo logrotate -d e o caminho da regra. A opção -d não altera os logs nem atualiza o arquivo de estado.

O copytruncate é seguro?

Ele resolve o caso de programas que não reabrem o log, mas a documentação avisa que algumas linhas podem ser perdidas entre a cópia e o esvaziamento do arquivo.

Esta resposta lhe foi útil?

Artigos Relacionados