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

98

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

tail -n 15 -F mylogfile.txt

Quando o arquivo de log é preenchido, tail acrescenta as últimas linhas ao display.

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

    
por Marc-Olivier Titeux 19.01.2012 / 13:30

5 respostas

136

Pode ser suficiente usar o relógio:

$ watch tail -n 15 mylogfile.txt
    
por 19.01.2012 / 13:38
22

Se você usa watch, tente a opção -n para controlar o intervalo entre cada atualização.

Assim, o seguinte chamaria a cauda a cada 2 segundos

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

enquanto este pesquisa a cada 1 segundo

$ watch -n 1 tail -n 15 mylogfile.txt
    
por 22.01.2012 / 18:18
12

Você pode transmitir o arquivo de log em menos tempo e pressionar SHIFT + F para transmitir o arquivo usando menos. %código% Em seguida, basta pressionar SHIFT + F e ele será transmitido. Eu acho que é conveniente para monitorar arquivos de log que são atualizados.

    
por 22.01.2012 / 08:06
8

Talvez você ache o -d param útil.

man watch

-d Highlight the differences between successive updates. Option will read optional argument that changes highlight to be permanent, allowing to see what has changed at least once since first iteration.

    
por 28.05.2013 / 15:10
0

No Solaris, AIX ou HPUX ou UNIX (incluindo Linux), você pode usar scripts para monitorar logs ou qualquer coisa 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
    
por 15.11.2017 / 02:21