Introducción
Imagine que tiene un robot que limpia su casa mientras usted duerme. Como está durmiendo, no puede ver cómo trabaja el robot. Cuando se despierta, ¿cómo sabe si realmente limpió la casa o si se quedó atascado debajo del sofá?
La respuesta es pedirle al robot que lleve un diario.
En Linux, los scripts automatizados suelen ejecutarse en segundo plano o mediante programadores, cuando nadie observa el terminal. Por eso, la salida en pantalla no es suficiente. Para realizar un seguimiento de lo ocurrido, escribimos la salida en un archivo de registro.
Este es uno de los hábitos de automatización más sencillos y valiosos. Un script sin registros puede fallar silenciosamente. Un script con registros deja pruebas.
En este laboratorio, usted aprenderá a:
- Redirigir la salida: enseñar a un script a escribir en un archivo en lugar de hacerlo en la pantalla.
- Conservar el historial: usar el operador de adición para incorporar nuevas entradas sin borrar las anteriores.
- Añadir marcas de tiempo: asegurarse de que cada entrada del diario incluya la fecha y la hora.
Añadir la salida a un archivo de registro
Los scripts básicos muestran su salida inmediatamente en la pantalla. Es como hablar cara a cara con alguien. Pero si nadie escucha —como ocurre con los scripts automatizados—, las palabras se pierden para siempre.
Necesitamos capturar esas palabras en un archivo. Para ello, usaremos operadores de redirección.
Esto se relaciona directamente con una idea anterior sobre el shell: normalmente, los comandos escriben en la salida estándar, y la redirección cambia el destino de esa salida. El registro no es más que un uso práctico de ese mismo mecanismo en la automatización.
>(Sobrescribir): «Borrar el diario y comenzar una página nueva». (Mala opción para conservar el historial)>>(Añadir): «Ir a la siguiente línea vacía y escribir allí». (Buena opción para conservar el historial)
Veamos el script sencillo que hemos preparado:
cat myscript.sh
El script solo muestra el mensaje «The script is running». Si lo ejecuta ahora (./myscript.sh), el mensaje aparecerá en la pantalla.
Vamos a modificarlo para que escriba en un diario llamado script.log.
Abra el script:
nano myscript.sh
Cambie la línea para usar el operador >>.
Consejo profesional: al escribir registros, use siempre la ruta absoluta (la dirección completa), como /home/labex/project/script.log. Así se asegura de que el diario no se pierda en carpetas aleatorias si el script se ejecuta desde otra ubicación.
Este hábito es importante porque los trabajos programados suelen ejecutarse con un directorio de trabajo distinto del que usted espera en un shell interactivo. Un script que escribe en script.log sin especificar una ruta puede crear el archivo en el lugar equivocado.
El archivo debe quedar así:
#!/bin/bash
echo "The script is running" >> /home/labex/project/script.log
Guarde los cambios y salga del editor.
Ahora, ejecute el script:
./myscript.sh
Silencio.
El script se ejecutó, pero no le mostró ningún mensaje. En su lugar, escribió discretamente en el diario.
Compruebe el diario:
cat script.log
Debería ver el mensaje almacenado correctamente en el archivo.
Añadir marcas de tiempo
Una entrada de diario que describe «qué ocurrió» no sirve de mucho si no indica «cuándo ocurrió». Si el script se ejecuta todos los días durante un año, el archivo de registro solo tendrá 365 líneas idénticas con el mensaje «The script is running».
Necesitamos añadir una marca de tiempo. Linux incluye un comando llamado date que muestra la hora actual. También redirigiremos su salida al archivo de registro.
Este es el comienzo de la observabilidad: dejar suficientes pruebas para que una persona pueda reconstruir posteriormente lo ocurrido. Incluso unas marcas de tiempo muy sencillas mejoran mucho su capacidad para solucionar problemas en trabajos automatizados.
Abra myscript.sh:
nano myscript.sh
Añada el comando date antes del mensaje. De este modo, el registro mostrará primero la hora y después la acción.
#!/bin/bash
date >> /home/labex/project/script.log
echo "The script is running" >> /home/labex/project/script.log
Guarde los cambios y salga del editor.
Vuelva a ejecutar el script:
./myscript.sh
Compruebe el registro:
cat script.log
Ahora debería ver algo parecido a esto:
The script is running
Fri Oct 27 10:00:00 UTC 2023
The script is running
(La primera línea procede de la prueba anterior).
Ahora cada acción incluye una hora precisa. Así puede demostrarle a su jefe que la copia de seguridad automatizada realmente se ejecutó a las 3 de la madrugada.
En sistemas más grandes, los registros también ayudan a responder preguntas más complejas: si un script se ejecutó dos veces, si se detuvo a mitad de ejecución o cuánto tiempo transcurrió entre ejecuciones. Unos buenos registros convierten una automatización invisible en algo que usted puede inspeccionar.
Verificar el historial del registro
Vamos a comprobar la teoría del uso de «añadir». Si usáramos > (sobrescribir) en lugar de >> (añadir), el archivo de registro nunca crecería; en la práctica, solo mostraría la última ejecución.
Esta diferencia importa siempre que un script se ejecuta repetidamente. Sobrescribir resulta útil para obtener una instantánea del estado, pero añadir suele ser mejor para conservar registros históricos porque mantiene la secuencia de eventos.
Simulemos un día con mucha actividad en el que el script se ejecuta varias veces.
Ejecútelo tres veces seguidas:
./myscript.sh
./myscript.sh
./myscript.sh
Ahora, lea el diario:
cat script.log
Debería ver una lista de entradas cada vez más larga, cada una con su propia marca de tiempo. Este historial es muy valioso para solucionar problemas. Si un servidor falló ayer, puede desplazarse hacia atrás en el registro hasta la marca de tiempo de ayer y comprobar exactamente qué hacía el script en ese momento.
Resumen
Ha enseñado correctamente a su script a llevar un diario.
En este laboratorio, aprendió lo siguiente:
- Redirección (
>>): enviar el «discurso» a un archivo para que no se pierda. - Añadir contenido: incorporar información al historial en lugar de borrarlo.
- Añadir marcas de tiempo: incorporar
datepara saber cuándo ocurrieron las cosas.
Esta es la forma estándar en que funcionan los servicios profesionales en Linux. Ya se trate de un servidor web o de una base de datos, todos escriben en archivos de registro exactamente como usted acaba de hacerlo.



