shell script para excluir logs de 6 meses do arquivo de log [closed]

1

Eu tenho um arquivo de log de tamanho 6.2 GB que está em uso pelo processo e ele continua gravando logs nesse arquivo. Agora eu não quero rodar logs no entanto eu quero limpar este arquivo de log. Eu quero excluir os logs que são mais antigos do que 6 meses deste arquivo. É possível usar o shell script para ler o arquivo de log e excluir os logs com mais de 6 meses?

abaixo é o formato de log

10.0.3.xx - - [17/Jun/2016:14:21:59 +0000] "GET /visible_topics HTTP/1.1" 200 581 "-" "help/97a1dd7eb981421b9719adde381560a78bed0b66 (ip-10-0-3-xxx; user1; 4411) ruby/2.3.0 (0; x86_64-linux)" 
    
por Shailesh Sutar 04.01.2017 / 23:14

2 respostas

9

A solução é usar logrotate : funciona muito bem e também pode compactar o log rotacionado.

Se você realmente não quer usar o logrotate, você teve que manualmente cat / copiar a seção relevante do seu arquivo de log para um novo, em seguida, remover o antigo.

Sem um exemplo detalhado de seu formato de log, não é possível dar a você nenhum conselho sobre o comando shell necessário.

De qualquer forma, você deveria usar o logrotate.

    
por 04.01.2017 / 23:31
0

Desejo excluir os registros com mais de 6 meses deste arquivo.

Não estou claro o que você quer dizer, mas se eu tivesse que adivinhar, você deseja remover logfile entradas deste arquivo que são mais antigos do que 6 meses. Se for esse o caso, isso pode ser feito, mas é uma forma bastante extraordinária de gerenciar logs em um sistema * nix.

O que você deseja fazer (se a suposição estiver correta) exigirá analisar cada linha desse arquivo e determinar o registro de data e hora para testar se a data de entrada está dentro da janela atual de seis meses. Dependendo de uma aprovação / reprovação do timestamp, você escreveria o novo arquivo de log sem as entradas "antigas". Você poderia usar ferramentas shell como grep e head e tail para conseguir isso, mas no interesse do desempenho você pode querer considerar um aplicativo C compilado customizado especificamente para o que você precisa.

Eu não sei em que tipo de hardware este arquivo de log está, mas o tamanho deste arquivo de log (6.8 Gigabytes) provavelmente causará gargalos de desempenho significativos ao analisar as entradas antigas e escrever as novas. Na maioria dos casos, quando as coisas são tão problemáticas, geralmente é um sinal de que o processo precisa ser revisto. Há casos de canto para essa regra no entanto. Boa sorte.

    
por 05.01.2017 / 23:06