Comando tail de Linux: Visualización del final de archivos

LinuxBeginner
Practicar Ahora

Introducción

En este tutorial, exploraremos el comando tail en Linux, una potente herramienta diseñada para mostrar las últimas líneas de un archivo de texto. Nos centraremos en un escenario práctico de monitorización de archivos de registro (logs) del sistema, una tarea habitual para los administradores de sistemas. Al finalizar este tutorial, comprenderá cómo utilizar tail para visualizar el contenido de los archivos, personalizar la salida y supervisar cambios en tiempo real. Esta experiencia práctica le proporcionará habilidades valiosas para la resolución de problemas y la monitorización del sistema.

Este es un Laboratorio Guiado (Guided Lab), que proporciona instrucciones paso a paso para ayudarle a aprender y practicar. Siga las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 98%. Ha recibido una tasa de valoraciones positivas del 99% por parte de los alumnos.

Conceptos básicos de tail

El comando tail es la herramienta de referencia para ver el final de un archivo. Resulta especialmente útil para revisar las entradas más recientes en archivos de registro o para echar un vistazo rápido a los últimos cambios en un documento.

Comencemos examinando un archivo de registro de ejemplo. Utilizaremos un archivo llamado system.log ubicado en el directorio /home/labex/project.

Entrada:

tail /home/labex/project/system.log

Escriba este comando en su terminal y pulse Intro. No se preocupe si no está familiarizado con la terminal; es simplemente una interfaz basada en texto donde puede escribir comandos.

Este comando mostrará las últimas 10 líneas del archivo system.log. La salida debería ser similar a esta:

2024-03-15 09:23:45 [INFO] User 'john_doe' logged in successfully
2024-03-15 09:24:12 [WARNING] Disk usage on /dev/sda1 reached 80%
2024-03-15 09:25:03 [ERROR] Failed to connect to database server
2024-03-15 09:25:30 [INFO] Backup process started
2024-03-15 09:26:17 [INFO] Network interface eth0 went down
2024-03-15 09:26:45 [INFO] Network interface eth0 is up
2024-03-15 09:27:22 [WARNING] High CPU usage detected: 92%
2024-03-15 09:28:01 [INFO] Scheduled system update initiated
2024-03-15 09:28:39 [ERROR] Unable to reach email server
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully

Analicemos lo que está viendo:

  • Cada línea representa una entrada del registro.
  • La primera parte de cada línea es una marca de tiempo (fecha y hora).
  • El texto entre corchetes (como [INFO], [WARNING] o [ERROR]) indica el nivel de severidad de la entrada.
  • El resto de la línea es el mensaje de registro propiamente dicho.

Por defecto, tail muestra las últimas 10 líneas del archivo. Este comportamiento es muy útil para comprobar rápidamente entradas recientes o modificaciones sin tener que abrir y desplazarse por todo el archivo.

Personalización del número de líneas

En ocasiones, es posible que necesite ver más o menos líneas que las 10 que se muestran por defecto. La opción -n (abreviatura de "number") le permite especificar exactamente cuántas líneas desea ver.

Veamos las últimas 5 líneas de nuestro archivo de registro:

Entrada:

tail -n 5 /home/labex/project/system.log

Escriba este comando en su terminal y pulse Intro. La parte -n 5 le indica a tail que muestre solo las últimas 5 líneas en lugar de las 10 habituales.

Este comando devolverá algo como esto:

2024-03-15 09:27:22 [WARNING] High CPU usage detected: 92%
2024-03-15 09:28:01 [INFO] Scheduled system update initiated
2024-03-15 09:28:39 [ERROR] Unable to reach email server
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully
2024-03-15 09:29:45 [INFO] User 'jane_smith' logged out

Como puede observar, ahora tenemos una vista más enfocada de las entradas más recientes. Esto resulta especialmente práctico cuando busca los últimos eventos sin verse abrumado por demasiada información.

Puede sustituir el 5 por cualquier número que desee. Por ejemplo, tail -n 20 mostraría las últimas 20 líneas, mientras que tail -n 1 mostraría únicamente la última línea del archivo.

Visualización de contenido desde una línea específica

Aunque tail se utiliza normalmente para ver el final de un archivo, también puede emplearlo para mostrar el contenido a partir de un número de línea específico. Esto se consigue utilizando el signo más (+) antes del número de línea.

Veamos el contenido de nuestro archivo de registro empezando desde la línea 50:

Entrada:

tail -n +50 /home/labex/project/system.log

Escriba este comando en su terminal y pulse Intro. El parámetro -n +50 le indica a tail que comience a mostrar el contenido desde la línea 50 en adelante.

Este comando mostrará todas las líneas desde la número 50 hasta el final del archivo. La salida podría ser bastante extensa dependiendo del tamaño del archivo. Aquí tiene un ejemplo de lo que podría ver:

2024-03-15 08:45:12 [INFO] Backup process completed successfully
2024-03-15 08:46:03 [WARNING] Low memory warning: Available memory below 15%
2024-03-15 08:47:30 [INFO] System update check initiated
...
(más líneas)
...
2024-03-15 09:29:10 [INFO] Firewall rules updated successfully
2024-03-15 09:29:45 [INFO] User 'jane_smith' logged out

Esta función es muy útil cuando necesita revisar una gran parte de un archivo a partir de un punto determinado. Puede ayudarle a investigar problemas que podrían haber comenzado en un momento específico o tras un evento concreto en sus registros.

Nota: Si especifica un número mayor que el total de líneas del archivo, tail simplemente no mostrará nada o mostrará el contenido disponible si el archivo es más corto de lo esperado.

Monitorización de cambios en tiempo real

Una de las características más potentes de tail es su capacidad para monitorizar archivos en tiempo real. Esto es extremadamente útil para observar archivos de registro mientras se escriben en ellos. Utilizamos la opción -f (que significa "follow" o seguir) para lograr esto.

Monitoricemos nuestro archivo de registro en tiempo real:

Entrada:

tail -f /home/labex/project/system.log

Escriba este comando en su terminal y pulse Intro. Tras ejecutarlo, verá las últimas 10 líneas del archivo, seguidas de cualquier línea nueva que se añada al archivo en tiempo real.

Para simular la adición de nuevas entradas de registro, abra una nueva ventana de terminal y ejecute el siguiente comando:

echo "$(date) [INFO] New log entry for testing" >> /home/labex/project/system.log

Debería ver aparecer la nueva entrada en la terminal donde se está ejecutando tail -f. Esta monitorización en tiempo real es invaluable para los administradores de sistemas que necesitan rastrear eventos del sistema en el momento en que ocurren.

Para salir del comando tail -f, pulse Ctrl+C en la terminal donde se está ejecutando. Este atajo de teclado envía una señal de interrupción al proceso actual, deteniendo el comando tail.

Combinación de opciones para uso avanzado

El comando tail se vuelve aún más potente cuando se combinan diferentes opciones. Vamos a combinar la opción -n con la opción -f para monitorizar las últimas 3 líneas de nuestro archivo de registro en tiempo real.

Entrada:

tail -n 3 -f /home/labex/project/system.log

Escriba este comando en su terminal y pulse Intro. Este comando mostrará las últimas 3 líneas del archivo y luego continuará mostrando cualquier línea nueva que se añada. Esto es útil cuando desea centrarse únicamente en las entradas más recientes de un archivo de registro que cambia rápidamente.

Para probar esto, abra otra ventana de terminal y añada una nueva entrada de registro:

echo "$(date) [WARNING] Unusual network activity detected" >> /home/labex/project/system.log

Debería ver aparecer esta nueva entrada en la terminal donde se ejecuta tail -n 3 -f, junto con las dos entradas anteriores.

Recuerde usar Ctrl+C para salir del comando tail cuando haya terminado la monitorización.

Consejo: El orden de las opciones no importa en este caso. tail -f -n 3 funcionaría exactamente de la misma manera.

Resumen

En este tutorial, hemos explorado el versátil comando tail en Linux, centrándonos en su aplicación para la monitorización de archivos de registro. Hemos aprendido a:

  1. Ver las últimas líneas de un archivo utilizando el comando tail básico.
  2. Personalizar el número de líneas mostradas mediante la opción -n.
  3. Visualizar el contenido a partir de una línea específica usando tail -n +N.
  4. Monitorizar cambios en los archivos en tiempo real con la opción -f.
  5. Combinar opciones para un uso más avanzado.

Estas habilidades son fundamentales para la administración de sistemas, la depuración y las tareas de monitorización. A medida que se sienta más cómodo con tail, descubrirá que es una herramienta indispensable en su repertorio de Linux.