-->

Planificación y monitorización con el comando watch

Objetivo:

Aprender a utilizar el comando watch para monitorizar de forma periódica y automática la salida de otros comandos en Linux, comprendiendo la utilidad de la opción -n y las precauciones que hay que tener en cuenta al combinarlo con tuberías.

Escenario:

  • Herramientas: Terminal de Linux y un sistema Debian o basado en Debian.
  • Conceptos clave: watch, opción -n, refresco automático, tuberías, comillas, ps, free.

Instrucciones:

Fase 1: Primer contacto con watch

  • Abre una terminal y consulta el estado de la memoria en un momento dado:
  • free
  • Ejecuta el mismo comando pero con watch, para que se refresque automáticamente cada 2 segundos:
  • watch -n 2 free
  • Observa cómo la información se va actualizando en pantalla sin necesidad de volver a escribir el comando.
  • Detén la ejecución de watch pulsando:
  • Ctrl + C

Fase 2: Monitorizar cambios en un directorio

  • Crea un nuevo directorio de pruebas:
  • mkdir practicando
  • Accede a dicho directorio:
  • cd practicando
  • Lanza watch para que muestre el contenido detallado del directorio cada segundo:
  • watch -n 1 ls -l
  • Sin cerrar esta terminal, abre una segunda terminal y accede al mismo directorio:
  • cd practicando
  • Desde la segunda terminal, crea un nuevo fichero:
  • touch f2
  • Observa en la primera terminal cómo aparece el nuevo fichero automáticamente en la siguiente actualización.
  • Desde la segunda terminal, añade contenido a un fichero:
  • echo hola > f2
  • Observa en la primera terminal cómo cambia el tamaño mostrado del fichero.
  • Desde la segunda terminal, elimina un fichero:
  • rm f2
  • Observa en la primera terminal cómo desaparece el fichero en la siguiente actualización.
  • Vuelve a la primera terminal y detén la ejecución de watch:
  • Ctrl + C

Fase 3: Combinar watch con tuberías (el problema de las comillas)

  • Consulta los procesos que más memoria están consumiendo en tu sistema, ordenados y limitados a los cinco primeros:
  • ps aux --sort=-%mem | tail -n 5
  • Intenta ahora monitorizar este mismo comando con watch, sin utilizar comillas:
  • watch -n 2 ps aux --sort=-%mem | tail -n 5
  • Observa que watch únicamente aplica el refresco automático a la primera parte del comando, antes de la tubería.
  • Detén la ejecución con Ctrl + C y repite el comando encerrando toda la instrucción entre comillas:
  • watch -n 2 "ps aux --sort=-%mem | tail -n 5"
  • Comprueba que ahora sí se actualiza correctamente el resultado completo de la tubería cada dos segundos.

Fase 4: Observar el efecto en vivo de un programa que consume memoria

  • Desde una segunda terminal, abre un editor de texto o cualquier programa disponible en tu sistema (por ejemplo nano o firefox):
  • nano ejemplo
  • Observa en la terminal donde se está ejecutando watch cómo aparece el nuevo proceso entre los que más memoria consumen.
  • Cierra el programa que has abierto y observa cómo la lista de procesos vuelve a su estado anterior en la siguiente actualización.
  • Detén la ejecución de watch con Ctrl + C.

Preguntas de reflexión:

  1. ¿Para qué sirve el comando watch?
  2. ¿Qué indica la opción -n del comando watch y qué ocurre si se cambia el número que la acompaña?
  3. ¿Qué ventaja tiene utilizar watch frente a ejecutar manualmente un comando varias veces seguidas?
  4. ¿Qué combinación de teclas se utiliza para detener la ejecución de watch?
  5. ¿Por qué al monitorizar cambios en un directorio con watch y ls -l es útil abrir una segunda terminal?
  6. ¿Qué problema aparece al utilizar watch junto con un comando que contiene una tubería, si no se utilizan comillas?
  7. ¿Por qué es necesario encerrar todo el comando entre comillas cuando se combina watch con tuberías?
  8. ¿Qué tipo de tareas de administración de sistemas crees que se benefician especialmente del uso de watch?
  9. ¿Qué diferencia hay entre monitorizar el uso de memoria con free mediante watch y hacerlo con el comando top visto anteriormente?
  10. ¿Qué relación existe entre el comando watch y otros comandos de planificación de tareas como cron, que se mencionan al principio del vídeo?
Haz clic aquí para ver las soluciones y explicaciones

1. ¿Para qué sirve el comando watch?

Permite ejecutar un comando de forma repetida a intervalos regulares, mostrando el resultado actualizado en pantalla sin necesidad de volver a escribirlo manualmente cada vez.


2. ¿Qué indica la opción -n del comando watch y qué ocurre si se cambia el número que la acompaña?

Indica cada cuántos segundos se debe refrescar la ejecución del comando. Si se aumenta el número, el refresco será menos frecuente; si se reduce, será más frecuente.


3. ¿Qué ventaja tiene utilizar watch frente a ejecutar manualmente un comando varias veces seguidas?

Permite observar la evolución de una información de forma continua y automática, sin tener que estar pendiente de volver a lanzar el comando cada cierto tiempo.


4. ¿Qué combinación de teclas se utiliza para detener la ejecución de watch?

Se utiliza la combinación Ctrl + C.


5. ¿Por qué al monitorizar cambios en un directorio con watch y ls -l es útil abrir una segunda terminal?

Porque mientras watch ocupa una terminal mostrando la información que se va actualizando, se necesita otra terminal libre para poder ejecutar comandos que modifiquen el directorio y así comprobar en tiempo real cómo se reflejan esos cambios.


6. ¿Qué problema aparece al utilizar watch junto con un comando que contiene una tubería, si no se utilizan comillas?

watch solo aplica el refresco automático a la primera parte del comando, la que está a la izquierda de la primera tubería, ignorando el resto de la instrucción.


7. ¿Por qué es necesario encerrar todo el comando entre comillas cuando se combina watch con tuberías?

Porque de esta forma watch interpreta toda la instrucción, incluidas las tuberías, como un único comando completo, y así puede refrescar correctamente el resultado final de toda la cadena de comandos.


8. ¿Qué tipo de tareas de administración de sistemas crees que se benefician especialmente del uso de watch?

Tareas como la monitorización del consumo de memoria o CPU, el seguimiento de cambios en un directorio (por ejemplo, durante una descarga o una copia de ficheros), o la supervisión de procesos que pueden consumir muchos recursos.


9. ¿Qué diferencia hay entre monitorizar el uso de memoria con free mediante watch y hacerlo con el comando top visto anteriormente?

top ofrece una vista interactiva y más completa, centrada en procesos y su consumo de CPU y memoria en tiempo real. watch combinado con free (u otro comando) permite refrescar de forma sencilla y controlada la salida de cualquier comando concreto, a un intervalo de tiempo definido por el usuario.


10. ¿Qué relación existe entre el comando watch y otros comandos de planificación de tareas como cron?

watch permite repetir la ejecución de un comando de forma continua mientras se mantiene abierta la terminal, mostrando el resultado en pantalla. cron, en cambio, permite planificar la ejecución de tareas en momentos concretos (por ejemplo, todas las noches a una hora determinada), sin necesidad de mantener una terminal abierta ni de estar pendiente del resultado en el momento de la ejecución.


Ficha de Laboratorio: Planificación y monitorización con el comando watch

Instrucciones de entrega:

  1. Rellena los campos y responde en este formulario desde tu navegador.
  2. Pulsa el botón de imprimir al final de la página.
  3. Selecciona "Guardar como PDF" en el diálogo de impresión.
  4. Entrega el archivo PDF en el aula virtual.

Alumno/a:      Fecha:      

Grupo:


Completa la ficha realizando las siguientes actividades:

  1. Ejecuta el comando free con watch para que se refresque cada 2 segundos.
    Escribe el comando utilizado:

    Describe qué observaste mientras se ejecutaba:
  2. Monitoriza con watch el contenido de un directorio mientras realizas cambios desde otra terminal.
    Escribe el comando utilizado para monitorizar:

    Indica qué cambios realizaste desde la segunda terminal:

    Describe cómo se reflejaron esos cambios en la ventana con watch:
  3. Comprueba el problema de usar watch con una tubería sin comillas, y luego corrígelo.
    Escribe el comando sin comillas:

    Escribe el comando corregido con comillas:

    Explica la diferencia de comportamiento observada entre ambos:
  4. Observa el efecto en vivo de abrir y cerrar un programa mientras watch monitoriza los procesos.
    Escribe el comando de watch utilizado:

    Indica qué programa abriste y qué cambio observaste:
  5. Reflexiona sobre la utilidad general del comando watch.
    Describe con tus propias palabras dos situaciones reales en las que utilizarías este comando: