¿Cómo monitorear solo las últimas n líneas de un archivo de registro?


110

Tengo un archivo de registro creciente para el que quiero mostrar solo las últimas 15 líneas. Esto es lo que sé que puedo hacer:

tail -n 15 -F mylogfile.txt

A medida que se llena el archivo de registro, tailagrega las últimas líneas a la pantalla.

Estoy buscando una solución que solo muestre las últimas 15 líneas y elimine las líneas antes de las últimas 15 después de que se haya actualizado. ¿Tendrías una idea?


28
Cambie el tamaño de la ventana de su terminal a 15 líneas.
Jonathan

1
Esa también es buena.
Marc-Olivier Titeux

3
@Jonathan genio!
Marsellus Wallace

No se pudo votar el comentario de Jonathan o pierde el sabor de tener 15 votos a favor
jdero

Respuestas:


151

Puede ser suficiente usar watch:

$ watch tail -n 15 mylogfile.txt

1
¡Excelente! Muchas gracias. También aprendo el comando 'watch' en el proceso.
Marc-Olivier Titeux

1
Tenga en cuenta que esta solución no funciona si el archivo crece más de 15 líneas entre dos watchactualizaciones. Puede usar -npara cambiar este intervalo.
bfontaine

25

Si usa watch, pruebe la -nopción para controlar el intervalo entre cada actualización.

Por lo tanto, lo siguiente llamaría cola cada 2 segundos

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

mientras este lo sondea cada 1 segundo

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

13

Puede transmitir el archivo de registro ejecutando menos y presionando MAYÚS + F que transmitirá el archivo usando menos. $ less mylogfile.txt Luego, simplemente presione MAYÚS + F y se transmitirá. Creo que es conveniente para monitorear los archivos de registro que se actualizan.


1
Esa es una muy buena!
kaiser

8

Tal vez encuentre el -dparámetro a mano.

man watch

-d Resalta las diferencias entre actualizaciones sucesivas. La opción leerá el argumento opcional que resalta los cambios para que sean permanentes, permitiendo ver lo que ha cambiado al menos una vez desde la primera iteración.


1
Buena captura también!
Marc-Olivier Titeux

0

En Solaris, AIX o HPUX o UNIX-like (incluido Linux) puede usar scripts para monitorear registros o algo así:

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.