Comando de cola de Linux con ejemplos
Como sabrá, el comando cat se usa para mostrar todo el contenido de un archivo a través de una entrada estándar. Pero en algunos casos, tenemos que imprimir la última parte del archivo. En Linux y Unix, el comando tail se usa para mostrar las últimas 10 líneas (por defecto) de un archivo usando una salida estándar.
El comando Tail se usa comúnmente para observar y analizar archivos, ya que puede mostrar líneas recién agregadas. Esta función se utiliza principalmente para ver registros u otros archivos que se actualizan de vez en cuando.
En este tutorial, aprendemos cómo usar el comando tail en Linux con algunos ejemplos prácticos. También veremos las opciones de cola en detalle.
Sintaxis del comando Tail
La siguiente línea muestra la sintaxis del comando tail:
tail [OPTION]... [FILE]...
Sin ningún OPTION
o FILE
, el comando tail acepta la entrada de STDIN. Entonces, en STDIN, si ingresa más de 10 líneas, solo se mostrarán las últimas 10 líneas donde el comando head hace exactamente lo contrario del comando tail.
El comando Tail puede aceptar uno o más nombres de archivos de entrada (FILE
).
1) Usando el comando tail para ver las últimas diez líneas de un archivo
Sin ninguna opción, comando de cola con visualización de las últimas 10 líneas del archivo de entrada.
En los siguientes ejemplos, el comando tail muestra las 10 líneas inferiores del archivo ‘file1.txt’:
$ tail file1.txt memtest86+_multiboot.bin System.map-2.6.38-12-generic System.map-2.6.38-13-generic System.map-2.6.38-8-generic vmcoreinfo-2.6.38-12-generic vmcoreinfo-2.6.38-13-generic vmcoreinfo-2.6.38-8-generic vmlinuz-2.6.38-12-generic vmlinuz-2.6.38-13-generic vmlinuz-2.6.38-8-generic
2) Muestra el número específico (limitado) de líneas
Si desea mostrar solo un número específico de líneas, debe usar la opción -n.
Podemos utilizar tres opciones diferentes para limitar el número de líneas.
Los siguientes tres comandos (-n100
, -n 100
, -100
) muestra las últimas 100 líneas del archivo ‘/var/log/apache2/error.log’:
$ tail -n100 /var/log/apache2/error.log
o
$ tail -100 /var/log/apache2/error.log
o
$ tail -n 100 /var/log/apache2/error.log
3) Cómo mostrar varios archivos
El comando Tail puede mostrarse desde varios archivos cuando se proporciona como argumento. Luego genera las últimas 10 líneas de cada archivo y con un encabezado que muestra el nombre del archivo.
$ tail file1.txt file2.txt ==> file1.txt <== memtest86+_multiboot.bin System.map-2.6.38-12-generic System.map-2.6.38-13-generic System.map-2.6.38-8-generic vmcoreinfo-2.6.38-12-generic vmcoreinfo-2.6.38-13-generic vmcoreinfo-2.6.38-8-generic vmlinuz-2.6.38-12-generic vmlinuz-2.6.38-13-generic vmlinuz-2.6.38-8-generic ==> file2.txt <== smi.conf snmp sound speech-dispatcher ssh ssl sudoers sudoers.d sysctl.conf tr command
Si no desea imprimir los encabezados (‘==> file1.txt <==' y '==> file2.txt <=='), puede usar el modo silencioso con -q
, --quiet
o --silent
opción. Esta opción se puede utilizar para combinar archivos.
$ tail -q file1.txt file2.txt
Si siempre desea imprimir encabezados, incluso cuando solo se proporciona un nombre de archivo como argumento, puede usar -v
o --verbose
opción
$ tail -v file1.txt
4) Mostrar los últimos bytes específicos de un archivo
Para mostrar los últimos bytes específicos del archivo, use -c
o --bytes
opción.
El siguiente comando de cola imprime los últimos 30 bytes del archivo file2.txt:
$ tail -c 30 file2.txt sudoers.d sysctl.conf sysctl.d
Alternativamente, puede usar -c +number
para generar todo lo que comienza en el byte number
.
$ tail -c +300 file1.txt
5) Ver cambios en el archivo
Usar -f
o --follow
opción para monitorear cambios de archivos. Esta opción se usa con mucha frecuencia para monitorear y solucionar problemas de archivos de registro.
El siguiente comando mostrará los últimos 10 cambios en el terminal para el archivo ‘/var/log/Xorg.1.log’.
$ tail -f /var/log/Xorg.1.log [ 86.774] (**) Option "xkb_layout" "us" [ 86.774] (**) Option "xkb_options" "terminate:ctrl_alt_bksp" [ 86.774] (II) Toshiba input device: (II) is tagged by udev as: Keyboard [ 86.774] (II) Toshiba input device: (II) device is a keyboard [ 88.453] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D [ 88.453] (II) Vision stereo. [ 102.094] (II) Display (Seiko/Epson (DFP-0)) does not support NVIDIA 3D [ 102.094] (II) Vision stereo. [ 540.435] (II) Axis 0x1 value 1158 is outside expected range See https://wayland.freedesktop.org for details
los -f
La opción siempre esperará los datos adjuntos y no se cerrará por sí sola. Tienes que presionar Ctrl+C
salir.
Intentemos mostrar las últimas 3 líneas de una salida de cola usando el -n
y f
opciones.
$ tail -n3 -f /var/log/Xorg.1.log [ 102.094] (II) Vision stereo. [ 540.435] (II) Axis 0x1 value 1158 is outside expected range See https://wayland.freedesktop.org for details
Utilizando la -fq
opción puede supervisar los cambios de varios archivos.
$ tail -fq /var/log/Xorg.1.log file2.txt
Con el -s
o --sleep-interval
(el valor predeterminado es 1 segundo), puede ajustar el intervalo de suspensión entre las iteraciones.
$ tail -f -s 4 /var/log/Xorg.1.log
Como se mencionó anteriormente con el -f
opción, el shell no sale por sí mismo, pero puede decirle al comando que termine después de que un proceso muera con la --pid
opción.
El comando saldrá tan pronto como el proceso con PID 4309 muera.
$ tail -f file2.txt --pid=4309
Con el --retry
opción, puede seguir intentando abrir un archivo incluso cuando es o se vuelve inaccesible. Una vez que esté accesible, se mostrará la salida.
$ tail -f file2.txt --retry
6) Usando cola con tubos
El comando tail se puede canalizar hacia / desde otros comandos para producir resultados optimizados.
El siguiente ejemplo usa el comando ls para listar todos los archivos y directorios y listar todos los directorios en la parte superior.
$ ls -l /etc | tail | sort drwxr-xr-x. 2 root root 4096 Mar 3 08:15 yum.repos.d drwxr-xr-x. 2 root root 4096 Mar 3 08:17 yum drwxr-xr-x. 2 root root 4096 Sep 25 14:54 xinetd.d drwxr-xr-x. 4 root root 4096 Sep 25 14:54 xdg drwxr-xr-x. 6 root root 4096 Sep 25 14:54 X11 lrwxrwxrwx. 1 root root 12 Dec 19 15:43 yum.conf -> dnf/dnf.conf -rw-r--r--. 1 root root 1204 Nov 11 19:08 virc -rw-r--r--. 1 root root 1982 Nov 11 19:08 vimrc -rw-r--r--. 1 root root 28 Sep 25 14:51 vconsole.conf -rw-r--r--. 1 root root 642 Dec 9 2016 xattr.conf
Si desea estar atento a las solicitudes de un tipo de archivo en particular, use el siguiente comando:
$ tail -f /var/log/apache/myvirtualhost.log | grep .jpg
En el siguiente ejemplo, el comando de cola de salida se canaliza y, con el comando de clasificación, se obtiene el contenido de ‘continente.txt’ ordenado en orden alfabético.
$ tail -n 5 continent.txt | sort Africa Antarctica Asia Australia Europe
Conclusión
Ahora hemos visto cómo usar el comando tail y sus opciones para mostrar las líneas inferiores de un archivo de texto. Espero que haya disfrutado de la lectura y deje sus sugerencias en la sección de comentarios a continuación.