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?

theShadow89
fuente
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.

David Foerster
fuente
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
Volker Siegel
fuente