La commande "watch", "surveillance" en français permet d'exécuter une commande à intervalles réguliers. Ceci est utile pour surveiller un changement sur un dossier, un fichier, la sortie d'un programme, etc...
Exemple de surveillance d'un dossier avec la commande "ls -la" permettant de lister le contenu du dossier.On exécute la commande "ls -la" toutes les 15 secondes grâce au paramètre "-n15" où "15" est le nombre de secondes entre 2 exécutions de la commande.
$ watch -n15 'ls -la'
Pour arrêter l'exécution, faire [CTRL] + c
Comme avec le shell, on peut exécuter plusieurs commandes à la suite. Par exemple, avec 3 commandes à la suite pour:
- Lister le dossier courant "ls -la"
- Afficher depuis combien de temps est démarré la machine "uptime"
- Afficher la date courante "date"
$ watch -n1 'ls -la; uptime; date'
La sortie peut être redirigée dans un fichier, utile pour savoir quand un changement est survenu sans rester devant son écran. Pour cela il est utile de mettre un séparateur, une ligne de dièses "#" dans l'exemple, et la date d'exécution de la commande.
Redirection du résultat dans un fichier "out.txt" sans affichage à l'écran.
$ watch -n15 'echo "$(echo -e "\n############################################################"; date; echo -e; ls -la)" >> out.txt'
Redirection du résultat dans un fichier "out.txt" avec affichage à l'écran grâce à la commande "tee". "tee" signifie "T", comme son nom l'indique cette commande envoie à la fois le résultat dans un fichier et à l'écran. Le paramètre "-a" signifie "append" permettant d'ajouter le contenu à la fin du fichier sans l'écraser.
$ watch -n1 'echo "$(echo -e "\n############################################################"; date; echo -e; ls -la)" | tee -a out.txt'