Cómo ejecutar un programa periódicamente usando el comando Watch en Linux

A veces, es necesario ejecutar repetidamente un comando o programa para monitorear varios aspectos de su sistema, como procesos en curso, uso de espacio en disco o inicios de sesión de usuarios. El comando watch de Linux le permite automatizar estas tareas sin tener que ejecutarlas manualmente una y otra vez.

Con este comando, puede monitorear las actividades del sistema en tiempo real, como inicios de sesión de usuarios, estado de la red, uso de memoria y CPU, espacio en disco, etc. Veamos cómo usar el comando watch en Linux.

¿Qué es el comando de vigilancia?

El comando watch Linux ejecuta un comando o programa específico repetidamente, a intervalos regulares, y muestra su salida en la terminal. Esto le permite observar los cambios en la salida en tiempo real. Actualiza la salida en cada intervalo, sobrescribiendo la salida anterior del comando. De forma predeterminada, el comando se repite cada dos segundos y continúa hasta que lo detiene manualmente usando Ctrl + C.

Ver sintaxis del comando

La sintaxis del comando de vigilancia es:

 watch options <command> 

Hay varias opciones de línea de comando disponibles para usar con el comando de vigilancia. Si ejecuta el comando de vigilancia sin ninguna opción, ejecutará el comando especificado cada dos segundos. Por ejemplo, lo siguiente le mostrará el resultado del comando ls:

 watch ls -l ~/ 

El resultado le mostrará los cambios en la lista del directorio si se crea, elimina o cambia de tamaño un archivo, mientras actualiza el resultado cada dos segundos.

  Cómo usar los PPA de Ubuntu en Debian Linux

Ejecute un comando cada X segundos usando el reloj

Puede cambiar el intervalo de actualización del comando de vigilancia. Esto significa que puede decirle al comando de vigilancia que espere x segundos antes de repetir el comando. Para cambiar el intervalo de actualización, use la opción -n seguida del intervalo de tiempo en segundos.

 watch -n  

Por ejemplo, para ejecutar un comando cada 5 segundos, ejecute:

 watch -n 5 <command> 

Resaltar cambios entre actualizaciones

El comando watch sobrescribe su salida en cada actualización. Usando la opción -d, también puede resaltar los cambios entre la salida anterior y la actualizada.

 watch -d 

Ocultar encabezado en la salida del comando watch

De forma predeterminada, el comando watch muestra un encabezado en la parte superior de cada salida que contiene el intervalo de actualización, el nombre del comando y la fecha y hora actuales del sistema. Puede eliminar el encabezado de la salida usando la opción -t:

 watch -t <command> 

Reproducir pitidos en caso de error

Cuando un proceso de Linux termina de ejecutarse, devuelve un código de salida. Por convención, el valor es 0 en caso de éxito y distinto de cero para representar un error. La opción -b del comando watch reproduce un pitido si el comando devuelve una salida distinta de cero.

  Cómo instalar la estación de trabajo de audio Tracktion en Linux

Digamos que desea monitorear sshd.service y recibir una notificación cuando el servicio se detenga; usarías:

 watch -b sudo systemctl status sshd.service 

Este comando emitirá un pitido cuando se detenga el servicio. El pitido se detendrá cuando se reanude el servicio. Para probar esto, abra otra ventana de terminal y detenga el servicio. Esto emitirá pitidos constantes hasta que inicies el servicio nuevamente. Sin embargo, para utilizar esta función, debe tener el paquete de pitidos instalado en su sistema.

Salga del comando de vigilancia al cambiar la salida

También puede indicarle al comando de vigilancia que deje de ejecutarse y salga cuando cambie la salida del comando. Puedes hacer esto usando la opción -g. Esta opción es muy útil en escenarios en los que se esperan ciertos cambios en la salida.

Una vez que la salida cambie, el comando de vigilancia se detendrá. Puede combinar este uso con el comando echo para mostrar un mensaje en la pantalla.

  Cómo configurar y usar el navegador web Qutebrowser en Linux

Por ejemplo, considere un escenario en el que está esperando que llegue un archivo a su directorio. El siguiente comando monitoreará el directorio para el archivo especificado. Tan pronto como llegue, el comando watch dejará de ejecutarse y el archivo de mensaje llegado se mostrará en la terminal.

 watch -g "ls -l | grep filename" && echo "file arrived" 

Otro ejemplo útil es una notificación cuando un usuario específico inicia sesión en su sistema:

 watch -g "who | grep username" && echo "username logged in" 

Este comando monitoreará la salida del comando who que enumera los usuarios que han iniciado sesión. Una vez que el usuario inicia sesión, el comando watch se detendrá y mostrará un mensaje en la terminal.

De manera similar, puede indicarle al comando de vigilancia que detenga un servicio cuando se realicen algunos cambios en un archivo. Tenga en cuenta que cuando utilice una cadena canalizada de comandos, deberá encerrar el comando completo entre comillas.

Vea actividades en su sistema Linux

Si se encuentra realizando el mismo proceso repetidamente, considere usar el comando watch para automatizarlo. Le evita tener que escribir comandos con frecuencia para ver qué ha cambiado.

También puede utilizar el comando watch con otros comandos de Linux para monitorear los recursos y actividades del sistema y realizar un seguimiento de los cambios en archivos o directorios.