Características avanzadas del comando watch
En este paso, aprenderás sobre algunas funciones avanzadas del comando watch que pueden hacer tus tareas de monitoreo más eficientes.
Comencemos explorando la opción -t, que desactiva el encabezado que muestra el comando y la hora actual:
watch -n 3 -t date
Observa que ahora el encabezado está oculto, lo que da una visualización más limpia centrada solo en la salida del comando. Esto es útil cuando quieres maximizar el espacio de pantalla para la salida.
Presiona Ctrl+C para salir.
A continuación, veamos cómo usar watch con la opción -g o --chgexit. Esta opción hace que watch se detenga cuando la salida del comando cambia:
touch ~/project/test_change.txt
watch -g -n 1 "ls -l ~/project/test_change.txt"
Mientras este comando está en ejecución, abre una nueva terminal y modifica el archivo:
echo "hello" > ~/project/test_change.txt
El comando watch en la primera terminal debe salir automáticamente cuando detecte el cambio en el archivo.
Creemos un ejemplo más práctico. Crearemos un script que simula un archivo de registro con errores ocasionales:
nano ~/project/simulate_logs.sh
En el editor nano, escribe el siguiente contenido:
#!/bin/bash
LOG_FILE=~/project/application.log
## Initialize log file
echo "Starting log simulation" > $LOG_FILE
## Generate simulated log entries
for i in {1..10}; do
echo "[$(date)] - INFO: Normal operation $i" >> $LOG_FILE
sleep 1
## Occasionally generate an error
if ((i % 3 == 0)); then
echo "[$(date)] - ERROR: Something went wrong!" >> $LOG_FILE
fi
done
echo "Log simulation complete" >> $LOG_FILE
Guarda y sal de nano (Ctrl+O, Enter, Ctrl+X), luego haz el script ejecutable:
chmod +x ~/project/simulate_logs.sh
Ahora, usemos watch con grep para monitorear mensajes de error en el archivo de registro:
watch -n 1 "grep ERROR ~/project/application.log || echo 'No errors found'"
En otra terminal, ejecuta el script de simulación de registros:
~/project/simulate_logs.sh
Observa cómo la primera terminal muestra cuando aparecen mensajes de error en el archivo de registro. Este es un ejemplo práctico de cómo usar watch para monitorear registros en tiempo real.
Presiona Ctrl+C para salir del comando watch.
Finalmente, veamos cómo ejecutar watch en segundo plano y redirigir su salida a un archivo:
watch -n 5 date > ~/project/date_output.txt 2>&1 &
Este comando ejecuta el comando watch en segundo plano, actualizando la fecha cada 5 segundos y guardando la salida en un archivo. Puedes ver el contenido del archivo:
cat ~/project/date_output.txt
Para detener el proceso watch en segundo plano, encuentra su PID y deténlo:
ps aux | grep "watch -n 5 date"
kill <PID> ## Replace <PID> with the actual process ID number
Estos ejemplos demuestran la versatilidad del comando watch para diversas tareas de monitoreo.