Pregunta: A veces quiero repetir un comando (o shell-script) con frecuencia (cada pocos segundos). ¿Hay alguna forma mejor de ejecutar un comando de Unix cada n segundos (en lugar de seguir escribiendo el mismo comando manualmente)?
Respuesta: Usando el comando de reloj, puede ejecutar un comando y ver su salida cada pocos segundos. Esto es muy útil al monitorear el uso de la memoria, el uso del disco, etc.,
Puede ejecutar cualquier comando de Unix usando el comando watch. El comando Watch se ejecutará hasta que lo finalice con CTRL+C o elimine el proceso.
Ejemplo 1:Ver la creación de un archivo usando watch ls
Cuando espera que un proceso en segundo plano cree un archivo, o cuando espera que un archivo de registro siga creciendo en tamaño, es posible que termine ejecutando el comando ls varias veces. En su lugar, puede usar el comando watch, que ejecutará el comando ls cada 2 segundos, como se muestra a continuación.
$ watch ls Every 2.0s: ls Thu Apr 15 16:11:58 2010 flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb
La primera línea de la salida del comando watch contiene la siguiente información de encabezado:
- Cada 2,0 s:Intervalo de tiempo. es decir, ls se ejecutará cada 2 segundos.
- ls:comando de Unix que se ejecuta cada 2 segundos.
- Jueves 15 de abril 16:11:58 2010:la fecha y hora actuales.
El resto de las líneas son la salida del comando que está ejecutando el reloj. En este ejemplo, muestra la salida del comando ls.
Ejemplo 2:muestra los detalles de la memoria libre y usada (con las diferencias resaltadas)
La opción -d resalta la diferencia entre actualizaciones sucesivas.
$ watch -d free -om Every 2.0s: free -om Thu Apr 15 16:11:59 2010 total used free shared buffers cached Mem: 992 878
114
0 135 379
Swap: 4095 8 4087
Si la salida de memoria no cambia en su sistema, pruebe la opción -d con el comando de fecha para ver cómo funciona.
$ watch -d date
Nota :¿Sabía que puede resaltar los cambios en la salida del comando superior?
Ejemplo 3:mostrar el espacio disponible en disco (repetir cada 10 segundos)
Por defecto, el comando de reloj usa un intervalo de 2 segundos, puede cambiarlo usando la opción -n. El siguiente ejemplo ejecuta el comando df -h cada 10 segundos.
$ watch -n 10 df -h Every 10.0s: df -h Thu Apr 15 16:12:26 2010 Filesystem Size Used Avail Use% Mounted on /dev/sda7 30G 8.6G 20G 31% / tmpfs 497M 964K 496M 1% /dev/shm /dev/sda6 194M 22M 163M 12% /boot
Ejemplo 4:suprimir el encabezado de observación en la salida
Puede suprimir la primera línea de la salida del comando del reloj usando la opción -t como se muestra a continuación.
$ watch -t ls flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb