Limpar logs do sistema em servidores Linux

Como limpar/truncar/zerar diversos arquivos de uma só vez (por exemplo, arquivos de log) sem ter que apagá-los e recriá-los depois.

Colaboração: Mário Jorge Limeira dos Santos

Data de Publicação: 29 de novembro de 2012

Quem administra servidores linux sabe que certas vezes é necessário limpar arquivos de logs manualmente para liberar espaço em disco na partição raiz. Aparentemente a solução mais simples é excluir os arquivos e aguardar que o(s) daemon(s) ao(s) qual(is) os arquivos pertencem recriem esses arquivos.

Porém, muitas vezes esses arquivos são recriados com o dono e/ou grupo e/ou permissões diferentes daquelas que o arquivo tinha antes de ser apagado e isso pode trazer sérios transtornos ao sistema rodando no servidor.

Esse dias foi preciso limpar uns arquivos de log de acesso do Sarg para liberar espaço na partição raiz de um servidor. Depois de tentar algumas combinações de comandos com o find e o xargs e depois de muito buscar na web, encontrei uma solução utilizando os comandos find e xargs em um fórum.

Logado no servidor como usuário root faça:

# find . -size +1M -iname *.log | xargs -i bash -c “echo > {}”

Nesse caso, os arquivos de log que se desejava limpar foram filtrados pelo tamanho do arquivo (Arquivos com tamanho acima de 1MB ), mas é possível aplicar diversos filtros. Para ver as opções completas basta digitar no terminal:

# man find

> Referência: http://www.mail-archive.com/shell-script@yahoogrupos.com.br/msg05088.html

Observação: essa dica foi utilizada num servidor com a distribuição CentOS mas deve funcionar em outras distribuições com linux.

[Voltar]