desenv-web-rp.com

Como monitorar apenas as últimas n linhas de um arquivo de log?

Eu tenho um arquivo de log crescente para o qual desejo exibir apenas as últimas 15 linhas. Aqui está o que eu sei que posso fazer:

tail -n 15 -F mylogfile.txt

À medida que o arquivo de log é preenchido, tail anexa as últimas linhas à exibição.

Estou procurando uma solução que exiba apenas as últimas 15 linhas e se livre das linhas antes das últimas 15 após a atualização. Você tem uma ideia?

117
Marc-Olivier Titeux

Pode ser suficiente usar o watch:

 $ watch tail -n 15 mylogfile.txt 
160
William Pursell

Se você usa o relógio, tente o -n opção para controlar o intervalo entre cada atualização.

Assim, o seguinte chamaria cauda a cada 2 segundos

$ watch -n 2 tail -n 15 mylogfile.txt

enquanto este pesquisa cada 1 segundo

$ watch -n 1 tail -n 15 mylogfile.txt
25
Turgon

Você pode transmitir o arquivo de log executando menos e pressionando SHIFT + F que transmitirá o arquivo usando menos. $ less mylogfile.txt Em seguida, pressione SHIFT + F e ele transmitirá. Eu acho que é conveniente para monitorar arquivos de log atualizados.

13
Niklas

Talvez você encontre o -d param à mão.

man watch

-d Destaque as diferenças entre atualizações sucessivas. Option lerá o argumento opcional que destaca as alterações como permanentes, permitindo ver o que mudou pelo menos uma vez desde a primeira iteração.

8
michalzuber

No Solaris, AIX ou HPUX ou UNIX-like (incluindo Linux), você pode usar scripts para monitorar logs ou algo assim:

while true; 
    clear; 
    do date; 
    echo ;
    echo "MONITORING LOG IN "/path/to/file.log": "; 
    echo "Obs.: Last 20 lines of a logfile:
    echo ;
    tail -20 /path/to/file.log;
    echo ;
sleep 5; 
done
0
João Gerardo