Jun 042011
 

tux-terminalA volte è utile eseguire più e più volte lo stesso comando fino a quando qualcosa accade, per esempio si potrebbe voler fare un ls-lrt fino a quando un file ha raggiunto una certa dimensione o è creato, come fare?
Certo si può usare la storia della bash ed usare freccia in su e farlo più e più volte, o magari scrivere qualche riga di bash per avere un ciclo infinito che esegue lo stesso comando, ma c’è un approccio più intelligente per far questo: watch .

Watch

watch esegue i comandi ripetutamente, mostrando il suo output e gli errori. Questo vi permette di osservare il cambiamento di output del programma nel corso del tempo. Per impostazione predefinita, il programma viene eseguito ogni 2 secondi; usando -n o –interval è possibile specificare un intervallo diverso. Normalmente questo intervallo viene interpretato come il lasso di tempo tra il completamento di una esecuzione del comando e l’inizio della prossima esecuzione. Tuttavia, con l’opzione -p o –precise, è possibile effettuare un tentativo di eseguire il comando ogni intervallo indicato.

Uso Base

watch "qui il comando con le sue opzioni"

Questo farà eseguire il comando con le sue opzioni ogni 2 secondi

Opzioni

Le opzioni più comuni per watch sono:

-n impostare l’intervallo in secondi.
-d metterà in evidenza le differenze tra gli aggiornamenti successivi.
-b fa sì che il comando dia un segnale acustico (beep) se ha un non-zero come uscita.
-e causa l’uscita di watch su un errore del programma in esecuzione.

Alcuni esempi

1) Visualizzare il contenuto di una directory con le differenze evidenziate

watch -d  "ls -alrt /tmp/

2) Stampa l’orario e lo aggiorna ogni secondo:

watch -t -n 1 "date +%T|figlet"

Output

  ___   ___    ____  ____   _________
 / _  / _  _|___ | ___|_|___ /___ 
| | | | | | (_) __) |___ (_) |_  __) |
| |_| | |_| |_ / __/ ___) | ___) / __/
 ___/ ___/(_)_____|____(_)____/_____|

3) Controlla le query lanciate su Mysql

watch -n 1 "mysqladmin --user=root --password=mypassword processlist"

4) Mostra i 10 processi che stanno consumando più CPU:

watch 'ps -eo pcpu,pid,user,args | sort -k 1 -n -r | head -10'


Conclusioni

watch è un piccolo comando di shell che come molti comando Unix fa 1 cosa sola e la fa bene, ripete un comando e mostra il suo output.
Ma anche “solo” facendo questo mi ha aiutato in molte occasioni, e spero possa fare altrettanto con voi.

Popular Posts:

Flattr this!

  2 Responses to “Watch – Lancia un comando per sempre sul terminale”

  1. Very nice article. You want edit some of the formatting in the article, though. For example:

    watch -n 1 “mysqladmin –user= –password= processlist”

    WordPress is adding ending tags to and 😀

  2. Nice tip 🙂

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*