Como truncar todos os arquivos de log?

12

alguém pode me dar uma solução para truncar todo o arquivo de log no diretório /var/log/ ?

e uma pergunta apenas para conhecimento, é uma boa ideia ou não?

#!/bin/bash
LOGDIR="/var/log"
for logfile in $(ls $LOGDIR/*log)
do
  truncate -s 0 $logfile
done
    
por pylover 12.03.2013 / 00:22

2 respostas

26

tente isto:

truncate -s 0 /var/log/*log

EDITAR:

se você quiser fazer isso mais de uma vez, use logrotate para gerenciar seus registros. Geralmente é instalado no Ubuntu. Dê uma olhada em man logrotate (ou, se você não o tiver instalado, procure em on-line manpage ou instale-o com sudo apt-get install logrotate )

da página de manual:

  

logrotate é projetado para facilitar a administração de sistemas que   gerar          grandes números de arquivos de log. Permite rotação automática, compressão,          remoção e envio de arquivos de log. Cada arquivo de log pode ser manipulado diariamente          semanalmente, mensalmente ou quando crescer muito.

    
por D-E-N 12.03.2013 / 00:31
7

Se você quiser limpar todos seus arquivos de log, não apenas aqueles na pasta de log de primeiro nível, você pode usar:

shopt -s globstar                  # if needed
truncate -s 0 /var/log/*.log       # first-level logs
truncate -s 0 /var/log/**/*.log    # nested folders, like /var/log/nginx/access.log

Se você já tiver logrotate em execução, também precisará limpar os logs .gz girados:

find /var/log -type f -name '*.[0-99].gz' -exec rm {} +

Um uso válido para isso pode estar construindo um contêiner de dispositivo VM para distribuição, por exemplo.

Você deve não precisar fazer isso como parte da manutenção de rotina: como o D-E-M sugeriu corretamente, use logrotate para isso.

    
por msanford 10.04.2015 / 21:47

Tags