Ti sei mai trovato in una situazione in cui dovevi eseguire ripetutamente un comando Linux specifico ogni pochi secondi? Bene, se non lo sai già, questo tutorial ti insegnerà come fare. Ovviamente puoi farlo usando uno script di shell o cron jobs . Puoi anche ripetere un comando Linux a un intervallo particolare senza doverlo eseguire manualmente ogni volta. Ecco dove Watch
il comando torna utile. Questo comando può essere utilizzato per eseguire ripetutamente il comando dato e monitorare l'output. Per dirla in parole semplici, possiamo usare il comando Watch per eseguire un comando Linux ogni X secondi per sempre e continuerà a visualizzare l'output nella console finché non lo arresteremo manualmente premendo CTRL+C
o terminare il processo o riavviare forzatamente il sistema. Per impostazione predefinita, il comando fornito verrà eseguito ogni 2 secondi, oppure puoi definire l'intervallo di tempo che preferisci.
Esegui un comando Linux ogni X secondi per sempre con il comando Watch
La sintassi di watch
il comando è:
$ watch [options] command
Di seguito ho fornito alcuni esempi per insegnarti dove puoi usare watch
comando per eseguire ripetutamente un comando Linux specifico.
Esempio 1:
Diciamo che vuoi eseguire il uptime
comando ogni 2 secondi per monitorare il tempo di attività del tuo sistema. Per farlo, esegui semplicemente:
$ watch uptime
Risultato di esempio:
Every 2.0s: uptime sk Wed Feb 9 20:14:46 2018 20:15:46 up 2:38, 1 users, load average: 0.41, 0.35, 0.46
Ecco,
- Ogni 2 secondi: uptime - Il
uptime
il comando verrà eseguito ogni 2 secondi e visualizzerà il risultato. - sk - L'utente attualmente connesso
- Mer 9 febbraio 20:14:46 2018 - La data e l'ora correnti in cui abbiamo eseguito il comando.
Questo continuerà a funzionare fino a quando non lo termini manualmente. Per uscire dal comando, premi CTRL+C
.
Puoi anche salvare l'output del uptime
comando in un file. Per farlo, esegui:
$ watch `uptime` > uptime.txt
Oppure
$ watch `uptime` > uptime.doc
Questo può essere utile quando desideri inviare il tempo di attività del tuo sistema a un supporto tecnico per ottenere assistenza.
Esempio 2:
Come ho detto prima, watch
comando esegue un programma ogni 2 secondi per impostazione predefinita. Possiamo cambiarlo in un intervallo particolare, ad esempio 5 secondi, usando -n
parametro.
Mostriamo l'utilizzo dello spazio su disco del file system ogni 5 secondi.
$ watch -n 5 df -h
Risultato di esempio:
Every 5.0s: df -h sk: Wed May 9 20:19:09 2018 Filesystem Size Used Avail Use% Mounted on dev 3.9G 0 3.9G 0% /dev run 3.9G 1.1M 3.9G 1% /run /dev/sda2 457G 357G 77G 83% / tmpfs 3.9G 32M 3.9G 1% /dev/shm tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup tmpfs 3.9G 36K 3.9G 1% /tmp /dev/loop0 83M 83M 0 100% /var/lib/snapd/snap/core/4327 /dev/sda1 93M 55M 32M 64% /boot tmpfs 789M 28K 789M 1% /run/user/1000
Per verificare se questo comando funziona davvero, crea o elimina qualsiasi file/cartella. Noterai che lo spazio libero è cambiato nell'output dopo aver creato o eliminato i file/le cartelle.
Esempio 3:
Per guardare il contenuto di un cambio di directory, esegui:
$ watch -d ls -l
Qui, il -d
o --differences
flag evidenzierà le differenze tra gli aggiornamenti successivi.
Risultato di esempio:
total 3857440 -rw------- 1 sk users 1921843200 Apr 25 22:47 bionic-desktop-amd64.iso -rw------- 1 sk users 1921843200 Apr 25 03:02 bionic-desktop-amd64.iso.zs-old drwxr-xr-x 2 sk users 12288 May 8 18:45 Desktop drwxr-xr-x 2 sk users 4096 Apr 20 16:54 Documents drwxr-xr-x 11 sk users 4096 May 9 19:56 Downloads drwxr-xr-x 2 sk users 4096 Jan 7 2017 Music drwxr-xr-x 5 sk users 12288 Mar 23 17:34 Pictures drwxr-xr-x 2 sk users 4096 May 11 2016 Public
Inoltre, puoi visualizzare il contenuto di un cambio di directory che è di proprietà di un particolare utente (es. sk ).
$ watch -d 'ls -l | fgrep sk'
Questo può essere utile in un sistema multiutente.
Esempio 4:
Per visualizzare i dettagli della memoria, eseguire:
$ watch -d free -m
Esempio 5:
Per visualizzare l'output di du comando ogni 10 secondi, puoi usare:
$ watch -n 10 du -h
Risultato di esempio:
Every 10.0s: du -h sk: Wed May 9 20:26:43 2018 17M ./.disruptive innovations sarl/bluegriffon/q87d9o6v.default/extensions 16K ./.dooble/Dooble 4.0K ./.dooble/Histories 176K ./.dooble 4.0K ./.PlayOnLinux/wine/mono 13M ./.PlayOnLinux/wine/gecko 4.0K ./.PlayOnLinux/wine/linux-amd64 652K ./.PlayOnLinux/wine/linux-x86/1.3.19/share/wine/fonts 872K ./.PlayOnLinux/wine/linux-x86/1.3.19/share/wine
Questo monitora l'utilizzo del disco ogni 10 secondi fino a quando non esci manualmente.
Per maggiori dettagli, ti consiglio di fare riferimento alle pagine man.
$ man watch
Esegui un comando Linux ogni X secondi per sempre con il ciclo While
Puoi farlo anche con l'aiuto di While
ciclo.
Per ripetere un comando ogni 2 secondi per sempre, esegui:
$ while sleep 2 ; do uptime ; done
Esempio di output:
21:10:21 up 10:12, 1 user, load average: 0.83, 0.71, 0.59 21:10:23 up 10:12, 1 user, load average: 0.76, 0.70, 0.59 21:10:25 up 10:12, 1 user, load average: 0.76, 0.70, 0.59 21:10:27 up 10:12, 1 user, load average: 0.70, 0.68, 0.58 [...]
Conclusione
Ora sai come eseguire un comando ogni X secondi usando Watch
comando. In genere, Watch
comando viene utilizzato per monitorare l'utilizzo del disco e l'utilizzo della memoria. Si prega di non confondere questo comando con altri strumenti di monitoraggio. Questo comando ha lo scopo di eseguire un comando ogni secondo particolare per sempre, fino a quando non lo arresti manualmente.
Lettura correlata:
- Come ripetere un comando finché non riesce in Linux