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?


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.