Comando watch: uso, intervalo -n, resaltado -d y salir cuando cambia la salida

Entorno de pruebaFamilia RHELAlmaLinux 9.8procps-ng 3.3.17Cuenta rootDebian 12 · procps-ng 4.0.2 cuenta normal
Comandos de procesos y programación de tareaswatchUbicación/usr/bin/watchVerificado el 2026-11-05
Vigilar los cambios en la salida de un comando

El comando watch es un comando de Linux que vuelve a ejecutar un comando dado cada 2 segundos y redibuja su salida en toda la pantalla de la terminal. Al vigilar archivos con watch en un servidor AlmaLinux 9 mientras se cambiaban desde otra ventana, la opción -d resaltó los caracteres que cambiaron y la opción -g terminó watch cuando cambió la salida.

La salida de abajo procede de una carpeta de trabajo en un servidor AlmaLinux 9.8, ejecutada como root; en un servidor Debian 12 solo se comprobó la versión. El nombre de host de la línea de cabecera, arriba de la pantalla, se cambió por el valor de ejemplo server1, y las horas están en UTC.

1️⃣ Cómo usar el comando watch

  • ↪️ Intervalo predeterminado de 2 segundos y salir con Ctrl+C

Escribe después de watch el comando que quieres repetir; sin opciones, lo ejecuta cada 2 segundos y sustituye la pantalla por la nueva salida. Al vigilar date apareció una línea de cabecera arriba de la pantalla y, tras una línea vacía, la salida de date.

watch date
Every 2.0s: date                                                   server1: Thu Oct 29 02:28:07 2026

Thu Oct 29 02:28:07 UTC 2026

La parte izquierda de la línea de cabecera es el intervalo de actualización y el comando en ejecución; la derecha, el nombre de host y la hora de la última ejecución. Al mirar la misma pantalla 2 segundos después, la hora de la cabecera y la salida de date habían cambiado a la vez.

Every 2.0s: date                                                   server1: Thu Oct 29 02:28:09 2026

Thu Oct 29 02:28:09 UTC 2026

watch sigue ejecutándose hasta que lo terminas tú, así que se termina con Ctrl+C. Al pulsar Ctrl+C desapareció la pantalla de watch y volvió el prompt. El código de salida comprobado justo después fue 0.

echo $?
0

watch sirve para repetir comandos que imprimen una vez y terminan. Para ver cómo cambia el uso de CPU y memoria de cada proceso es mejor el comando top, que redibuja su propia pantalla.

watch forma parte del paquete procps-ng. La versión se comprueba con [watch -v]: era 3.3.17 en el servidor AlmaLinux 9.8 y 4.0.2 en el servidor Debian 12.

watch -v
watch from procps-ng 3.3.17
watch -v
watch from procps-ng 4.0.2

2️⃣ Opciones de intervalo y resaltado de watch

  • ↪️ Intervalo -n, resaltado -d y -t para quitar la cabecera

Si pones un número de segundos después de -n, cambia el intervalo de actualización. Al ejecutar [watch -n 1 date], la parte izquierda de la cabecera pasó a Every 1.0s.

watch -n 1 date
Every 1.0s: date                                                   server1: Thu Oct 29 02:28:15 2026

Thu Oct 29 02:28:15 UTC 2026

Según la página man, el intervalo no puede ser menor de 0,1 segundos y los valores más pequeños se cambian a 0,1 segundos. Como separador decimal se aceptan tanto el punto como la coma.

-d resalta los caracteres que difieren de la actualización anterior. Mientras se vigilaba size.log de la carpeta de trabajo con [ls -l], se añadió una línea al archivo desde otra ventana.

watch -d -n 1 ls -l size.log
Every 1.0s: ls -l size.log                                         server1: Thu Oct 29 02:28:53 2026

-rw-r--r-- 1 root root 7 Oct 29 02:28 size.log
printf 'line 2\n' >> size.log

Cuando el tamaño del archivo pasó de 7 a 14, se resaltó todo desde la columna del tamaño hasta el final de la línea. El número ganó una cifra, así que todos los caracteres siguientes se desplazaron una posición. En la siguiente actualización el valor no cambió y el resaltado desapareció.

Every 1.0s: ls -l size.log                                         server1: Thu Oct 29 02:28:54 2026

-rw-r--r-- 1 root root 14 Oct 29 02:28 size.log

Para seguir resaltando todo lo que cambió desde la primera ejecución, usa [--differences=permanent] (según la página man).

-t quita la línea de cabecera y la línea vacía de debajo, y deja solo la salida del comando.

watch -t -n 1 date
Thu Oct 29 02:28:19 UTC 2026

3️⃣ Condiciones de salida y opciones del comando watch

  • ↪️ -g para cambios en la salida y -e para errores

-g termina watch cuando cambia la salida del comando. Sirve para esperar a que cambie el contenido de un archivo de estado antes de pasar a la siguiente tarea.

watch -g -n 1 cat status.txt
Every 1.0s: cat status.txt                                         server1: Thu Oct 29 02:29:12 2026

running

Desde otra ventana, el comando de abajo cambió el contenido de status.txt a done.

printf 'done\n' > status.txt

Entonces watch terminó, volvió el prompt y el código de salida fue 0.

echo $?
0

-e congela la pantalla cuando el comando termina con un código de salida distinto de 0. Al vigilar con ls un archivo que no existe en la carpeta de trabajo, apareció la salida de error de ls y, en la última línea de la pantalla, un aviso de que al pulsar una tecla se sale.

watch -e -n 1 ls nofile.txt
Every 1.0s: ls nofile.txt                                          server1: Thu Oct 29 02:29:18 2026

ls: cannot access 'nofile.txt': No such file or directory










command exit with a non-zero status, press a key to exit

La hora de la cabecera quedó fija en el momento justo después de la ejecución, y al pulsar una tecla watch terminó. El código de salida esta vez fue 8.

echo $?
8

La página man describe el código de salida 8 como un valor que incluye el caso en que el comando terminó con un error.

📌 Opciones principales: resultados de este artículo

OpciónTareaResultado en este artículo
-n segundosCambia el intervalo de actualización (2 segundos por defecto)La cabecera pasó a Every 1.0s
-dResalta los caracteres que difieren de la actualización anteriorCon el tamaño 7 → 14, resaltado desde esa columna hasta el final de la línea; desapareció en la siguiente actualización
-tQuita la línea de cabecera y la línea vacía de debajoSolo queda una línea de salida de date
-gTermina watch cuando cambia la salidaTerminó tras running → done, código de salida 0
-eCongela la pantalla cuando el comando termina con errorTerminó al pulsar una tecla, código de salida 8
-vMuestra la información de versiónwatch from procps-ng 3.3.17 en el servidor AlmaLinux 9.8 y watch from procps-ng 4.0.2 en el servidor Debian 12

📎 Otras opciones: según el manual oficial

OpciónTarea
-bEmite un pitido cuando el comando termina con un código de salida distinto de 0
-cInterpreta los códigos ANSI de color y estilo para mostrar la salida del comando con sus colores
-pEjecuta en cada intervalo para que la hora de actualización no se retrase
-xEjecuta el comando con exec en lugar de sh -c, con lo que hacen falta menos comillas
-wCorta las líneas largas en vez de pasarlas a la línea siguiente
--differences=permanentSigue resaltando todo lo que cambió desde la primera ejecución
-hMuestra la ayuda

4️⃣ Comillas y tuberías en el comando watch

  • ↪️ Encerrar entre comillas simples y vigilar el uso del disco

watch ejecuta el comando que recibe con sh -c, así que un comando que contiene una tubería(|) o $ se encierra entero entre comillas simples. Al vigilar el número de archivos de la carpeta de trabajo con [ls | wc -l], la cabecera mostró el comando completo, tubería incluida.

watch -n 1 'ls | wc -l'
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:22 2026

6

Al crear un archivo más desde otra ventana, en la siguiente actualización el número pasó de 6 a 7.

printf 'c\n' > q3.txt
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:24 2026

7

Si escribes [watch -n 1 ls | wc -l] sin comillas, el shell divide primero la tubería y toda la salida en pantalla de watch pasa a wc. Por eso, cuando el comando que quieres vigilar tiene una tubería, encierra el comando completo entre comillas.

$ sigue la misma regla. Al ejecutar [watch -n 1 echo $$] sin comillas, el shell actual convirtió primero $$ en un número, y ese número apareció también en el comando de la cabecera.

watch -n 1 echo $$
Every 1.0s: echo 3755802                                           server1: Thu Oct 29 02:29:37 2026

3755802

Con comillas simples, $$ pasa tal cual, así que la cabecera mostró echo $$ y en cada actualización se imprimió el PID del sh recién ejecutado.

watch -n 1 'echo $$'
Every 1.0s: echo $$                                                server1: Thu Oct 29 02:29:40 2026

3756270
Every 1.0s: echo $$                                                server1: Thu Oct 29 02:29:41 2026

3756333

Al comprobar el PID del shell actual con [echo $$], salió el mismo número que había quedado fijo en la ejecución sin comillas.

echo $$
3755802

Los valores que cambian despacio, como el uso del disco, se vigilan con un intervalo de unos segundos. Comando du: -s muestra solo el total y -h muestra los tamaños en unidades como K y M. Mientras se vigilaba la carpeta de trabajo con [du -sh .], al añadir 8.001 bytes a un archivo de registro desde otra ventana, en la siguiente actualización 28K pasó a 36K.

watch -n 2 du -sh .
Every 2.0s: du -sh .                                               server1: Thu Oct 29 02:30:34 2026

28K     .
printf '000d\n' 0 >> grow.log
Every 2.0s: du -sh .                                               server1: Thu Oct 29 02:30:36 2026

36K     .

🔲 Simulador del comando watch

En el simulador de abajo, ejecuta watch y cambia archivos con los chips [🖊 Otra ventana] para ver tú mismo cómo cambia la pantalla.

Simulador del comando watchprocps-ng 3.3.17
[root@server work]#
Funciona solo en tu navegador. En la pantalla de watch, cambia archivos con los chips [Otra ventana] y termina con Ctrl+C.

🔢 FAQ & contenido recomendado

Según la página man, si pones un número de segundos en la variable de entorno WATCH_INTERVAL, ese valor se usa como intervalo cuando no se indica -n. El valor sigue las mismas reglas que -n, así que no puede ser menor de 0,1 segundos.

Según la página man, watch quita los caracteres de control de la salida antes de dibujarla. Para ver los colores al vigilar un comando que imprime en color, añade -c, como en [watch -c].

Según la página man, en una ejecución normal la fracción de segundo de la hora de actualización crece un poco en cada actualización. Con -p, watch ejecuta en cada intervalo y esa fracción se mantiene casi igual.

ℹ️ Aviso de afiliados
El contenido de este sitio incluye enlaces de afiliado. Cuando un visitante compra un producto o servicio a través de uno de ellos, el sitio recibe una comisión del vendedor. El importe que paga el comprador(baja durante las promociones ↓)no aumenta. Los precios, descuentos y existencias publicados corresponden al momento de redacción y pueden variar, así que confírmalos con el vendedor antes de comprar. Los productos se eligen y evalúan con criterios propios, y las comisiones no influyen en el orden ni en el contenido de las reseñas.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Demuestra que eres humano: 3   +   7   =