Question : Parfois, je veux répéter une commande (ou un script shell) fréquemment (toutes les quelques secondes). Existe-t-il un meilleur moyen d'exécuter une commande unix toutes les n secondes (au lieu de continuer à taper la même commande manuellement) ?
Réponse : En utilisant la commande watch, vous pouvez exécuter une commande et afficher sa sortie toutes les quelques secondes. Ceci est très utile lors de la surveillance de l'utilisation de la mémoire, de l'utilisation du disque, etc.,
Vous pouvez exécuter n'importe quelle commande Unix en utilisant la commande watch. La commande Watch sera exécutée jusqu'à ce que vous la terminiez par CTRL+C ou que vous arrêtiez le processus.
Exemple 1 :Surveiller la création d'un fichier à l'aide de watch ls
Lorsque vous vous attendez à ce qu'un fichier soit créé par un processus en arrière-plan, ou lorsque vous vous attendez à ce qu'un fichier journal continue d'augmenter en taille, vous pouvez finir par exécuter la commande ls plusieurs fois. Au lieu de cela, vous pouvez utiliser la commande watch, qui exécutera la commande ls toutes les 2 secondes comme indiqué ci-dessous.
$ 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 première ligne de la sortie de la commande watch contient les informations d'en-tête suivantes :
- Toutes les 2.0s :Intervalle de temps. c'est-à-dire que ls sera exécuté toutes les 2 secondes.
- ls :commande Unix exécutée toutes les 2 secondes.
- Jeu 15 avril 16:11:58 2010 :la date et l'heure actuelles.
Le reste des lignes est la sortie de la commande que watch est en train d'exécuter. Dans cet exemple, il affiche la sortie de la commande ls.
Exemple 2 :Afficher les détails de la mémoire utilisée et libre (avec les différences mises en évidence)
L'option -d met en évidence la différence entre les mises à jour successives.
$ 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 sortie de la mémoire ne change pas sur votre système, essayez l'option -d avec la commande date pour voir comment cela fonctionne.
$ watch -d date
Remarque :Saviez-vous que vous pouvez mettre en surbrillance les modifications dans la sortie de la commande supérieure ?
Exemple 3 :Afficher l'espace disque disponible (répéter toutes les 10 secondes)
Par défaut, la commande watch utilise un intervalle de 2 secondes, vous pouvez le modifier à l'aide de l'option -n. L'exemple suivant exécute la commande df -h toutes les 10 secondes.
$ 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
Exemple 4 :Supprimer l'en-tête de surveillance dans la sortie
Vous pouvez supprimer la 1ère ligne de la sortie de la commande watch en utilisant l'option -t comme indiqué ci-dessous.
$ watch -t ls flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb