Bash edite o arquivo e mantenha as últimas 500 linhas

2

Eu estou olhando para criar um cron job que abre um diretório faz um loop através de todos os logs que eu criei e exclui todas as linhas, mas mantém os últimos 500 por exemplo.

Eu estava pensando em algo nos moldes de

tail -n 500 nome_do_arquivo > nome do arquivo

Isso funcionaria?

Eu também não sei como percorrer um diretório no bash

Obrigado antecipadamente.

    
por icelizard 21.05.2010 / 11:15

2 respostas

4
for file in *; do tail -n 500 filename > filename2 && mv filename2 filename ; done

Escrever no arquivo que você está lendo não é uma boa ideia. Minha solução também não é boa, pois você pode perder o log entre o comando tail e mv.
Mas de qualquer maneira

for file in *;

é uma maneira de fazer o loop de arquivos de um diretório.

Mas por que você não usa logrotate ??

    
por 21.05.2010 / 11:24
5

Você já ouviu falar do logrotate? Eu acho que não é bom apagar os logs.

    
por 21.05.2010 / 15:46