Red de conocimiento informático - Computadora portátil - 13. ¿Cómo monitorear dinámicamente los cambios en el contenido del archivo en Linux?

13. ¿Cómo monitorear dinámicamente los cambios en el contenido del archivo en Linux?

Utilice el comando

tail para generar el final del archivo. De forma predeterminada, se muestran las últimas diez líneas del archivo. Por lo general, se usa para monitorear dinámicamente el crecimiento de la cola de un archivo, como monitorear cambios en un archivo de registro. El comando head corresponde al comando tail y se utiliza para mostrar el contenido del encabezado del archivo.

Parámetros comunes

Formato: archivo final

Imprime la última parte del archivo. Imprima las últimas 10 líneas de cada ARCHIVO en la salida estándar. )

Formato: archivo final1 archivo2...

Al especificar varios archivos, se mostrará el nombre de cada archivo y luego se mostrará la cola del archivo (si hay varios ARCHIVOS, agregue un encabezado con el nombre del archivo antes de cada ARCHIVO)

Formato: tail

Formato: tail -.

No se especifica ningún archivo. Cuando se usa, significa leer desde la entrada estándar. Generalmente se usa después de una tubería. Se agrega un encabezado antes de cada tubería para dar el nombre del archivo. )

Formato: tail -n archivo

Formato: tail -n n archivo

Formato: tail -n n archivo

Formato: tail --lines=n

Muestra las últimas n líneas del archivo. Por ejemplo, el archivo tail -20 muestra las últimas 10 líneas del archivo. Se puede usar con otros parámetros. Tenga en cuenta que la n en cursiva en los tres formatos anteriores es el número real de filas que se mostrarán.

Nota: tail -n muestra las últimas n líneas de texto. Entonces, ¿hay alguna manera de mostrar el contenido del texto a partir de la línea n?

tail -n 4file significa mostrar el contenido del archivo a partir de la línea 4. El conteo comienza desde 1.

Formato: tail -f file

Seguimiento dinámico del crecimiento del archivo (genera datos adicionales a medida que el archivo crece), tail verificará una vez por segundo si se está agregando contenido nuevo el archivo, en caso afirmativo, añádalo a la salida original para mostrar el nuevo contenido. Pero en este caso, debes asegurarte de que el archivo ya exista cuando ejecutes el comando tail.

Para finalizar la salida de tail-f, presione Ctrl C para interrumpir el programa tail. Si Ctrl C no interrumpe la salida, puede forzar la finalización de la salida ejecutando el comando killall tail en otra terminal.

Nota: Es posible que el uso de tail -f para monitorear los cambios de archivos no funcione bien en algunos casos. Por ejemplo, en una aplicación Java que utiliza log4j para iniciar sesión, se genera un nuevo archivo de registro cada hora. La salida del registro actual está en LOG4J.LOG. Cuando pasa una hora, log4j cambiará el nombre de LOG4J.LOG a LOG4J.yyyy -mm-. dd-HH. En este momento, tail -f no puede generar dinámicamente nuevo contenido de registro. El comando tail en sí proporciona muchos parámetros y parece incapaz de resolver perfectamente este problema. Al final, tuve que escribir un script ftail.sh para rastrear el registro, consulte "Seguimiento en tiempo real de Linux del script bash del archivo de registro log4j: mejorar la función de tail -f". Simplemente miré la página de manual de tail y descubrí que tail -F puede rastrear este tipo de registros. Pensándolo bien, ya es hora de que la comunidad Linux satisfaga esta necesidad.

Formato: tail -F file

Formato: tail --follow=name --retry file

La función es la misma que tail -ffile, que También es dinámico Seguimiento de cambios en un archivo, excepto que es posible que el archivo no exista cuando se ejecuta el comando.

Lo anterior maneja archivos de texto y lo siguiente maneja archivos binarios.

Formato: tail -c n file

Obtiene los últimos n bytes del archivo.

Formato: tail -c n file

Obtiene el enésimo byte del archivo. El conteo comienza desde 1.

Ejemplos de uso

Ejemplo 1 Genera el final del archivo

Primero, usa el comando seq para generar 20 números y guárdalos en 1.txt, y luego intenta usar el comando tail.

[root@new55 ~]# seq 20 gt 1.txt

[root@new55 ~]# cat 1.txt

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

[root@new55 ~]# cola 1.txt

11

12

13

14

15

16

17

18

19

20

[root@new55 ~]# tail -3 1.txt

18

19

20

[raíz @new55 ~]# tail -n 3 1.txt

18

19

20

[root@new55 ~]# cola --lines=3 1.txt

18

19

20

[root@new55 ~]# cola -n 14 1.txt

14

15

16

17

18

19

20

[root @new55 ~]#

Ejemplo 2 Seguimiento dinámico de la salida de Tomcat

Seguimiento dinámico de la salida de Tomcat.

[root @web logs]# tail -f catalina.out

en org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)

en org.apache.coyote.Coyote.service(CoyoteAdapter.java:298)