Domanda: A volte voglio ripetere un comando (o uno script di shell) frequentemente (ogni pochi secondi). C'è un modo migliore per eseguire un comando unix ogni n secondi (invece di continuare a digitare lo stesso comando manualmente)?
Risposta: Usando il comando watch puoi eseguire un comando e visualizzarne l'output ogni pochi secondi. Questo è molto utile durante il monitoraggio dell'utilizzo della memoria, dell'utilizzo del disco ecc.,
Puoi eseguire qualsiasi comando Unix usando il comando watch. Il comando Watch verrà eseguito fino a quando non lo termini con CTRL+C o fino a quando non termini il processo.
Esempio 1:controllo della creazione di un file utilizzando watch ls
Quando ti aspetti che un file venga creato da un processo in background, o quando ti aspetti che un file di registro continui a crescere di dimensioni, potresti finire per eseguire il comando ls più volte. Invece, puoi usare il comando watch, che eseguirà il comando ls ogni 2 secondi come mostrato di seguito.
$ 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 prima riga dell'output del comando watch contiene le seguenti informazioni di intestazione:
- Ogni 2,0 s:intervallo di tempo. cioè ls verrà eseguito ogni 2 secondi.
- ls :comando Unix che viene eseguito ogni 2 secondi.
- Thu Apr 15 16:11:58 2010 :la data e l'ora correnti.
Il resto delle righe è l'output del comando che watch sta eseguendo. In questo esempio, mostra l'output del comando ls.
Esempio 2:Visualizza i dettagli della memoria utilizzata e libera (con le differenze evidenziate)
L'opzione -d evidenzia la differenza tra aggiornamenti successivi.
$ 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
Se l'output della memoria non cambia sul tuo sistema, prova l'opzione -d con il comando date per vedere come funziona.
$ watch -d date
Nota :sapevi che puoi evidenziare le modifiche nell'output del comando in alto?
Esempio 3:mostra lo spazio disponibile su disco (ripetere ogni 10 secondi)
Per impostazione predefinita, il comando watch utilizza un intervallo di 2 secondi, puoi cambiarlo usando l'opzione -n. L'esempio seguente esegue il comando df -h ogni 10 secondi.
$ 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
Esempio 4:sopprimi l'intestazione dell'orologio nell'output
Puoi sopprimere la prima riga dell'output del comando watch usando l'opzione -t come mostrato di seguito.
$ watch -t ls flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb