Cómo usar el comando tail en Linux

El comando tail de Linux muestra datos del final de un archivo. Incluso puede mostrar actualizaciones que se agregan a un archivo en tiempo real. Te mostramos cómo usarlo.

¿Systemd Kill Tail?

El comando tail le muestra los datos del final de un archivo. Por lo general, los datos nuevos se agregan al final de un archivo, por lo que el comando tail es una forma rápida y fácil de ver las adiciones más recientes a un archivo. También puede monitorear un archivo y mostrar cada nueva entrada de texto en ese archivo a medida que ocurren. Esto lo convierte en una gran herramienta para monitorear archivos de registro.

Muchas distribuciones modernas de Linux han adoptado el sistema systemd y el administrador de servicios. Este es el primer proceso ejecutado, tiene ID de proceso 1y es el padre de todos los demás procesos. Este rol solía ser manejado por los mayores sistema init.

Junto con este cambio, vino un nuevo formato para los archivos de registro del sistema. Ya no se crean en texto plano, en systemd se registran en formato binario. A leer estos archivos de registro, debe utilizar la utilidad journalnactl. El comando tail funciona con formatos de texto sin formato. No lee archivos binarios. Entonces, ¿esto significa que el comando tail es una solución en busca de un problema? ¿Todavía tiene algo que ofrecer?

Hay más en el comando tail que mostrar actualizaciones en tiempo real. Y en realidad, todavía hay muchos archivos de registro que no son generados por el sistema y aún se crean como archivos de texto sin formato. Por ejemplo, los archivos de registro generados por las aplicaciones no han cambiado de formato.

  Las 8 mejores aplicaciones de Linux para compartir su escritorio

Usando cola

Pase el nombre de un archivo al final y le mostrará las últimas diez líneas de ese archivo. Los archivos de ejemplo que estamos usando contienen listas de palabras ordenadas. Cada línea está numerada, por lo que debería ser fácil seguir los ejemplos y ver qué efecto tienen las distintas opciones.

tail word-list.txt

tail word-list.txt en una ventana de terminal

Para ver un número diferente de líneas, use la opción -n (número de líneas):

tail -n 15 word-list.txt

tail -n 15 word-list.txt en una ventana de terminal

En realidad, puede prescindir de la «-n», y simplemente utilizar un guión «-» y el número. Asegúrese de que no haya espacios entre ellos. Técnicamente, este es un formulario de comando obsoleto, pero todavía está en el página many todavía funciona.

tail -12 word-list.txt

tail -12 word-list.txt en una ventana de terminal

Usando tail con varios archivos

Puede hacer que la cola trabaje con varios archivos a la vez. Simplemente pase los nombres de archivo en la línea de comando:

tail -n 4 list-1.txt list-2.txt list-3.txt

tail -n 4 list-1.txt list-2.txt list-3.txt en una ventana de terminal

Se muestra un pequeño encabezado para cada archivo para que sepa a qué archivo pertenecen las líneas.

Visualización de líneas desde el inicio de un archivo

El modificador + (contar desde el inicio) hace que las líneas de cola se muestren desde el inicio de un archivo, comenzando en un número de línea específico. Si su archivo es muy largo y elige una línea cerca del inicio del archivo, obtendrá una gran cantidad de resultados enviados a la ventana del terminal. Si ese es el caso, tiene sentido canalizar la salida de tail a less.

tail +440 list-1.txt

tail +44 list-1.txt en una ventana de terminal

Usted puede hojear el texto de forma controlada.

Salida de la cola mostrada en menos en una ventana de terminal

Debido a que hay 20,445 líneas en este archivo, este comando es el equivalente a usar la opción «-6»:

tail +20440 list-1.txt

tail +20440 list-1.txt en una ventana de terminal

Usando bytes con cola

Puede decirle a tail que use compensaciones en bytes en lugar de líneas usando la opción -c (bytes). Esto podría resultar útil si tiene un archivo de texto formateado en registros de tamaño normal. Tenga en cuenta que un carácter de nueva línea cuenta como un byte. Este comando mostrará los últimos 93 bytes del archivo:

tail -c 93 list-2.txt

tail -c 93 list-2.txt en una ventana de terminal

Puede combinar la opción -c (bytes) con el modificador + (contar desde el inicio del archivo) y especificar un desplazamiento en bytes contados desde el inicio del archivo:

tail -c +351053 list-e.txt

tail -c +351053 list-e.txt en una ventana de terminal

Tubería en la cola

Anteriormente, canalizamos la salida de tail a less. También podemos canalizar la salida de otros comandos a tail.

  Cómo instalar Arch Linux

Para identificar los cinco archivos o carpetas con los tiempos de modificación más antiguos, utilice la opción -t (ordenar por tiempo de modificación) con ls y canalice la salida a tail.

ls -tl | tail -5

ls -lt |  tail -5 en una ventana de terminal

El comando de cabeza enumera líneas de texto desde el inicio de un archivo. Podemos combinar esto con tail para extraer una sección del archivo. Aquí, estamos usando el comando head para extraer las primeras 200 líneas de un archivo. Esto se canaliza a tail, que extrae las últimas diez líneas. Esto nos da las líneas 191 hasta la línea 200. Es decir, las últimas diez líneas de las primeras 200 líneas:

head -n 200 list-1.txt | tail -10

head -n 200 list-1.txt |  tail -10 en una ventana de terminal

Este comando enumera los cinco procesos que más memoria consumen.

ps aux | sort -nk +4 | tail -5

ps aux |  sort -nk +4 |  tail -5 en una ventana de terminal

Analicemos eso.

El comando ps muestra información sobre los procesos en ejecución. Las opciones utilizadas son:

a: Lista todos los procesos, no solo para el usuario actual.
u: muestra una salida orientada al usuario.
x: enumera todos los procesos, incluidos los que no se ejecutan dentro de un TTY.

El comando sort ordena la salida de ps. Las opciones que estamos usando con sort son:

n: Ordenar numéricamente.
k +4: Ordenar por la cuarta columna.

El comando tail -5 muestra los últimos cinco procesos de la salida ordenada. Estos son los cinco procesos que más memoria consumen.

Uso de tail para rastrear archivos en tiempo real

El seguimiento de las nuevas entradas de texto que llegan a un archivo, generalmente un archivo de registro, es fácil con tail. Pase el nombre del archivo en la línea de comando y use la opción -f (seguir).

tail -f geek-1.log

tail -f geek-1.log en una ventana de terminal

A medida que se agrega cada nueva entrada de registro al archivo de registro, tail actualiza su visualización en la ventana del terminal.

  Cómo jugar The Forest en Linux

Salida de tail -f geek-1.log en una ventana de terminal

Puede refinar la salida para incluir solo líneas de especial relevancia o interés. Aquí, estamos usando grep para solo mostrar líneas que incluyan la palabra «promedio»:

tail -f geek-1.log | grep average

tail -f geek-1.log |  promedio de grep en una ventana de terminal

Para seguir los cambios en dos o más archivos, pase los nombres de archivo en la línea de comando:

tail -f -n 5 geek-1.log geek-2.log

tail -f -n 5 geek-1.log geek-2.log en una ventana de terminal

Cada entrada está etiquetada con un encabezado que muestra de qué archivo proviene el texto.

Salida de tail -f -n 5 geek-1.log geek-2.log

La pantalla se actualiza cada vez que llega una nueva entrada en un archivo seguido. Para especificar el período de actualización, use la opción -s (período de suspensión). Esto le dice a tail que espere una cantidad de segundos, cinco en este ejemplo, entre verificaciones de archivos.

tail -f -s 5 geek-1.log

tail -f -s 5 geek-1.log en una ventana de terminal

Es cierto que no se puede saber al mirar una captura de pantalla, pero las actualizaciones del archivo se realizan una vez cada dos segundos. Las nuevas entradas de archivos se muestran en la ventana del terminal una vez cada cinco segundos.

Salida de tail -f -s 5 geek-1.log

Cuando sigue las adiciones de texto a más de un archivo, puede suprimir los encabezados que indican de qué archivo de registro proviene el texto. Utilice la opción -q (silencioso) para hacer esto:

tail -f -q geek-1.log geek-2.log

tail -f -q geek-1.log geek-2.log en una ventana de terminal

La salida de los archivos se muestra en una combinación perfecta de texto. No hay ninguna indicación de qué archivo de registro proviene cada entrada.

Salida de tail -f -q geek-1.log geek-2.log en una ventana de terminal

la cola todavía tiene valor

Aunque journalctl ahora proporciona acceso a los archivos de registro del sistema, tail todavía tiene mucho que ofrecer. Esto es especialmente cierto cuando se usa junto con otros comandos, entrando o saliendo de la cola.

systemd podría haber cambiado el panorama, pero todavía hay un lugar para las utilidades tradicionales que se ajustan a la filosofía Unix de hacer una cosa y hacerlo bien.