Terminar tail -f após imprimir n linhas

10

Eu tenho o seguinte.

  1. Um processo Java gravando logs no arquivo
  2. Um script de shell iniciando o processo Java.

Preciso ler o arquivo de log após iniciar o processo Java para verificar o início correto.

Eu tentei, tail -fmas ele permanece anexado para sempre. Preciso tailparar após imprimir n linhas. Existe uma maneira como -nopção para linhas previuos?

theShadow89
fonte
1
Seu arquivo de log é limpo toda vez, após o shell script executar o processo Java?
C0rp 21/10
Eu uso log4j com o modo de acréscimo para gravar o arquivo de log. Ele gira depois que a dimensão do arquivo aumenta até 10 MB.
theShadow89

Respostas:

24

Você pode canalizar a saída de tail -fpara headpara limitar a quantidade de linhas mostradas:

tail -f [PATH] | head -n 100

para mostrar apenas 100 linhas no total.

David Foerster
fonte
7

Apenas novas linhas

Com a planície tail -f, as 10 primeiras linhas são do arquivo como ele já existe:

tail -f file.log | head -30

grava 10 linhas de log.txtquando é executado e 20 (n-10) linhas que são adicionadas posteriormente.

Com um arquivo de log, você normalmente usa -f( --follow) para ver as linhas escritas no futuro.

Para ver apenas as 30 linhas que foram escritas depois que tailforam iniciadas, limite a saída inicial a 0:

tail -f -n0 file.log | head -30
Volker Siegel
fonte