Abrindo arquivo de log de armazenamento grande no vi

0

Eu tenho um log de armazenamento em uma partição AIX. Quando tento editar o arquivo com um comando vi, recebo a seguinte mensagem: ex: 0602-101 Out of memory saving lines for undo delete lines

Eu não quero estender o limite de arquivo para ler o arquivo. Em vez disso, quero excluir algumas linhas para reduzir o tamanho do arquivo.

Como posso especificar que excluo todo o conteúdo do arquivo, exceto as últimas 10000 linhas?

Eu achei que esse era o caminho certo, mas não funcionou bem: 1,$-10000d

    
por fedeemp 20.01.2017 / 13:51

1 resposta

2

Em vez de deletar todas as últimas 10000 linhas usando Vi, filtre-as em um novo arquivo (geralmente você não quer editar arquivos de log).

$ tail -n 10000 logfile >logfile.tail

Você pode então substituir logfile por logfile.tail , se desejar:

$ mv logfile.tail logfile

Como alguns programas que gravam em arquivos de log podem manter o arquivo de log aberto para gravação até que o programa saia, algumas novas mensagens podem ser gravadas no arquivo de log antigo, mesmo que ele seja substituído pela versão mais curta. Essas mensagens de log são perdidas.

Para contornar isso:

$ cat logfile.tail >logfile

Isso truncará logfile (esvaziando-o sem removê-lo) e, em seguida, substituirá o conteúdo por logfile.tail . Isso também significa que nenhuma mensagem de programas que tenham logfile aberto para gravação será perdida.

Considere também colocar algum tipo de rotação automática de arquivos de log para evitar arquivos de log excessivamente grandes.

    
por 20.01.2017 / 13:58