Comando Unix para esvaziar logfile de dentro de “less”?

4

Eu prefiro usar "menos" para ler arquivos de log. Ao contrário de "tail -f", posso seguir ( Shift + F ), parar ( Ctrl + C ) e navegar para cima e para baixo u e d , etc.

Agora, o que eu realmente gostaria de ter é a capacidade de esvaziar um determinado arquivo de log de dentro do programa. Isso é possível?

    
por Jesper Rønn-Jensen 18.12.2009 / 10:05

4 respostas

5

A maneira mais fácil IMHO é:
!>%
Ou seja: marca de exceção "!" , sinal maior ">" e sinal de porcentagem "%" .
Talvez isso ajude.

    
por 18.01.2010 / 19:26
2

Você pode simplesmente pressionar v para editar o arquivo no vim. No vim você deve acabar na linha em que você esteve pela última vez em menos, portanto, pressionar Vggd deve apagar da sua posição atual para o topo do arquivo. Com : wq você deve voltar para menos.

No entanto, o aplicativo que grava o arquivo de log pode não gostar disso, portanto, sua milhagem varia.

    
por 18.12.2009 / 10:35
1

O modo mais fácil de pensar é provavelmente usar ^Z para colocar o processo atual em segundo plano, remover seus arquivos e digitar fg para voltar ao seu processo. Dito isso, remover arquivos de log não é a melhor maneira de lidar com eles, é muito melhor usar logrotate para compactá-los.

    
por 18.12.2009 / 10:09
0

Você pode usar !cp /dev/null % para truncar o arquivo exibido no momento. Mas, como outros notaram, pode não funcionar corretamente (por exemplo, se o aplicativo que está gravando no arquivo mantém o arquivo aberto em vez de abrir / gravar / fechar para cada entrada). Você também pode tentar !mv -f % %.old && cp /dev/null % , o que irá mover o arquivo para fora do caminho e recriá-lo.

De qualquer maneira, vejo um comportamento estranho de menos ao tentar isso. ( R não atualiza do disco, G não busca e exibe o atual EOF (geralmente usado para “puxar” novas linhas sem entrar no 'modo de cauda') , h q G lê em novas linhas do arquivo, mas acrescenta todo o conteúdo do arquivo ao final do buffer em vez de apenas adicionando as novas linhas ao final (o arquivo tem linhas 1, depois 1/2, depois 1/2/3, etc. com o passar do tempo, less pode mostrar 1/1/1/2/1 / 2/1/2/3/1/2/3/1/2/3/4/1/2/3/4/1/2/3/4/1/2/3/4/1/2/3/4/5 se eu estivesse fazendo “hqG” duas vezes depois de cada nova linha)).

Estes mesmos problemas parecem acontecer com o método "use v para truncar-por-editor" também.

    
por 18.12.2009 / 12:56

Tags