Final de cola -f después de imprimir n líneas


10

Tengo lo siguiente

  1. Un proceso Java que escribe registros en el archivo
  2. Un script de shell que inicia el proceso Java.

Necesito leer el archivo de registro después de iniciar el proceso Java para verificar el inicio correcto.

He intentado con tail -fpero permanece agregar para siempre. Necesito tailparar después de imprimir n líneas. Hay una manera como -nopción para líneas previuos?


1
¿Su archivo de registro se limpia cada vez, después de que el script de shell ejecuta el proceso Java?
c0rp

Yo uso log4j con el modo append para escribir el archivo de registro. Gira después de que la dimensión del archivo aumente hasta 10 MB.
theShadow89

Respuestas:


24

Puede canalizar la salida de tail -fa headpara limitar la cantidad de líneas que se muestran:

tail -f [PATH] | head -n 100

para mostrar solo 100 líneas en total.


7

Solo nuevas líneas

Con el plano tail -f, las primeras 10 líneas son del archivo como ya existe:

tail -f file.log | head -30

escribe 10 líneas de log.txtcuando se ejecuta, y 20 líneas (n-10) que se agregan más tarde.

Con un archivo de registro, normalmente usa -f( --follow) para ver las líneas escritas en el futuro.

Para ver solo las 30 líneas que se escribieron después de tailcomenzar, limite la salida inicial a 0:

tail -f -n0 file.log | head -30
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.