Commande watch : utilisation, intervalle -n, surlignage -d et arrêt quand la sortie change
La commande watch est une commande Linux qui réexécute une commande donnée toutes les 2 secondes et redessine sa sortie sur tout l'écran du terminal. En surveillant avec watch des fichiers modifiés depuis une autre fenêtre sur un serveur AlmaLinux 9, l'option -d a surligné les caractères modifiés et l'option -g a arrêté watch après le changement de la sortie.
Les sorties ci-dessous proviennent d'un dossier de travail sur un serveur AlmaLinux 9.8, exécutées en root ; sur un serveur Debian 12, seule la version a été vérifiée. Le nom d'hôte de la ligne d'en-tête en haut de l'écran a été remplacé par la valeur d'exemple server1, et les heures sont en UTC.
1️⃣ Utiliser la commande watch
Écrivez après watch la commande à réexécuter ; sans option, watch l'exécute toutes les 2 secondes et remplace l'écran par la nouvelle sortie. En surveillant date, une ligne d'en-tête est apparue en haut de l'écran, suivie d'une ligne vide puis de la sortie de date.
watch dateEvery 2.0s: date server1: Thu Oct 29 02:28:07 2026
Thu Oct 29 02:28:07 UTC 2026La partie gauche de la ligne d'en-tête indique l'intervalle d'actualisation et la commande en cours ; la partie droite, le nom d'hôte et l'heure de la dernière exécution. En regardant le même écran 2 secondes plus tard, l'heure de l'en-tête et la sortie de date avaient changé ensemble.
Every 2.0s: date server1: Thu Oct 29 02:28:09 2026
Thu Oct 29 02:28:09 UTC 2026watch tourne jusqu'à ce que vous l'arrêtiez vous-même, on l'arrête donc avec Ctrl+C. Après Ctrl+C, l'écran de watch a disparu et l'invite est revenue. Le code de sortie vérifié juste après était 0.
echo $?0watch sert à réexécuter des commandes qui affichent une fois puis se terminent. Pour voir l'utilisation du processeur et de la mémoire changer processus par processus, mieux vaut utiliser la commande top, qui redessine elle-même son écran.
watch fait partie du paquet procps-ng. La version se vérifie avec [watch -v] : 3.3.17 sur le serveur AlmaLinux 9.8 et 4.0.2 sur le serveur Debian 12.
watch -vwatch from procps-ng 3.3.17watch -vwatch from procps-ng 4.0.22️⃣ Options d'intervalle et de surlignage de watch
Un nombre de secondes après -n change l'intervalle d'actualisation. Avec [watch -n 1 date], la partie gauche de l'en-tête est passée à Every 1.0s.
watch -n 1 dateEvery 1.0s: date server1: Thu Oct 29 02:28:15 2026
Thu Oct 29 02:28:15 UTC 2026D'après la page man, l'intervalle ne peut pas être inférieur à 0,1 seconde, et les valeurs plus petites sont ramenées à 0,1 seconde. Le point et la virgule sont tous deux reconnus comme séparateur décimal.
-d surligne les caractères qui diffèrent de l'actualisation précédente. Pendant que size.log du dossier de travail était surveillé avec [ls -l], une ligne a été ajoutée au fichier depuis une autre fenêtre.
watch -d -n 1 ls -l size.logEvery 1.0s: ls -l size.log server1: Thu Oct 29 02:28:53 2026
-rw-r--r-- 1 root root 7 Oct 29 02:28 size.logprintf 'line 2\n' >> size.logQuand la taille du fichier est passée de 7 à 14, tout a été surligné depuis la colonne de taille jusqu'à la fin de la ligne. Le nombre a pris un chiffre de plus, ce qui a décalé d'une position tous les caractères suivants. À l'actualisation suivante, la valeur n'a pas changé et le surlignage a disparu.
Every 1.0s: ls -l size.log server1: Thu Oct 29 02:28:54 2026
-rw-r--r-- 1 root root 14 Oct 29 02:28 size.logPour continuer à surligner tout ce qui a changé depuis la première exécution, utilisez [--differences=permanent] (d'après la page man).
-t supprime la ligne d'en-tête et la ligne vide en dessous, et ne laisse que la sortie de la commande.
watch -t -n 1 dateThu Oct 29 02:28:19 UTC 20263️⃣ Conditions d'arrêt et options de la commande watch
-g arrête watch quand la sortie de la commande change. On l'utilise pour attendre que le contenu d'un fichier d'état change avant de passer à la tâche suivante.
watch -g -n 1 cat status.txtEvery 1.0s: cat status.txt server1: Thu Oct 29 02:29:12 2026
runningDepuis une autre fenêtre, la commande ci-dessous a remplacé le contenu de status.txt par done.
printf 'done\n' > status.txtwatch s'est alors arrêté, l'invite est revenue, et le code de sortie était 0.
echo $?0-e fige l'écran quand la commande se termine avec un code de sortie différent de 0. En surveillant avec ls un fichier absent du dossier de travail, la sortie d'erreur de ls est apparue, avec sur la dernière ligne de l'écran un message indiquant qu'une touche permet de quitter.
watch -e -n 1 ls nofile.txtEvery 1.0s: ls nofile.txt server1: Thu Oct 29 02:29:18 2026
ls: cannot access 'nofile.txt': No such file or directory
command exit with a non-zero status, press a key to exitL'heure de l'en-tête est restée figée juste après l'exécution, et l'appui sur une touche a arrêté watch. Le code de sortie était alors 8.
echo $?8La page man décrit le code de sortie 8 comme une valeur qui inclut le cas où la commande s'est terminée par une erreur.
📌 Options principales : résultats de cet article
| Option | Rôle | Résultat dans cet article | |
|---|---|---|---|
| -n secondes | Change l'intervalle d'actualisation (2 secondes par défaut) | L'en-tête est passé à Every 1.0s | |
| -d | Surligne les caractères qui diffèrent de l'actualisation précédente | Taille 7 → 14 : surligné de cette colonne à la fin de la ligne, disparu à l'actualisation suivante | |
| -t | Masque la ligne d'en-tête et la ligne vide en dessous | Il ne reste qu'une ligne de sortie de date | |
| -g | Arrête watch quand la sortie change | Arrêt après running → done, code de sortie 0 | |
| -e | Fige l'écran quand la commande se termine par une erreur | Arrêt après l'appui sur une touche, code de sortie 8 | |
| -v | Affiche les informations de version | watch from procps-ng 3.3.17 sur le serveur AlmaLinux 9.8, watch from procps-ng 4.0.2 sur le serveur Debian 12 |
📎 Autres options : selon le manuel officiel
| Option | Rôle | |
|---|---|---|
| -b | Émet un bip quand la commande se termine avec un code de sortie différent de 0 | |
| -c | Interprète les codes ANSI de couleur et de style pour garder les couleurs de la sortie | |
| -p | Exécute à chaque intervalle pour que l'heure d'actualisation ne glisse pas | |
| -x | Exécute la commande avec exec au lieu de sh -c, ce qui demande moins de guillemets | |
| -w | Coupe les longues lignes au lieu de les renvoyer à la ligne suivante | |
| --differences=permanent | Continue de surligner tout ce qui a changé depuis la première exécution | |
| -h | Affiche l'aide |
4️⃣ Guillemets et tubes avec la commande watch
watch exécute la commande reçue avec sh -c ; une commande qui contient un tube(|) ou un $ doit donc être entourée entièrement de guillemets simples. En surveillant le nombre de fichiers du dossier de travail avec [ls | wc -l], l'en-tête a affiché la commande complète, tube compris.
watch -n 1 'ls | wc -l'Every 1.0s: ls | wc -l server1: Thu Oct 29 02:30:22 2026
6Après la création d'un fichier de plus depuis une autre fenêtre, le nombre est passé de 6 à 7 à l'actualisation suivante.
printf 'c\n' > q3.txtEvery 1.0s: ls | wc -l server1: Thu Oct 29 02:30:24 2026
7Si vous tapez [watch -n 1 ls | wc -l] sans guillemets, le shell découpe d'abord le tube, et toute la sortie écran de watch part vers wc. Quand la commande à surveiller contient un tube, entourez donc toute la commande de guillemets.
$ suit la même règle. Avec [watch -n 1 echo $$] sans guillemets, le shell actuel a d'abord remplacé $$ par un nombre, et ce nombre est aussi apparu dans la commande de l'en-tête.
watch -n 1 echo $$Every 1.0s: echo 3755802 server1: Thu Oct 29 02:29:37 2026
3755802Entre guillemets simples, $$ est transmis tel quel : l'en-tête a donc affiché echo $$, et chaque actualisation a affiché le PID du sh nouvellement lancé.
watch -n 1 'echo $$'Every 1.0s: echo $$ server1: Thu Oct 29 02:29:40 2026
3756270Every 1.0s: echo $$ server1: Thu Oct 29 02:29:41 2026
3756333Le PID du shell actuel, vérifié avec [echo $$], était le même nombre que celui resté fixe lors de l'exécution sans guillemets.
echo $$3755802Les valeurs qui changent lentement, comme l'espace disque utilisé, se surveillent avec un intervalle de quelques secondes. Commande du : -s n'affiche que le total et -h affiche les tailles en unités comme K et M. Pendant la surveillance du dossier de travail avec [du -sh .], l'ajout de 8 001 octets à un fichier journal depuis une autre fenêtre a fait passer 28K à 36K à l'actualisation suivante.
watch -n 2 du -sh .Every 2.0s: du -sh . server1: Thu Oct 29 02:30:34 2026
28K .printf '000d\n' 0 >> grow.logEvery 2.0s: du -sh . server1: Thu Oct 29 02:30:36 2026
36K .🔲 Simulateur de la commande watch
Dans le simulateur ci-dessous, lancez watch puis modifiez des fichiers avec les puces [🖊 Autre fenêtre] pour voir vous-même comment l'écran change.
🔢 FAQ & contenus recommandés
État du système
Commande uptime sous Linux (temps de fonctionnement du serveur & charge moyenne sur 1, 5 et 15 minutes)
La commande uptime affiche sur une ligne depuis combien de temps le serveur tourne et la charge moyenne sur 1, 5 et 15 minutes.
Texte
Commandes head et tail sous Linux
Les commandes head et tail affichent le début et la fin d'un fichier. Pour suivre la fin d'un journal qui grandit, utilisez [tail -f].
Disque
Commande df
La commande df affiche, pour chaque système de fichiers, la taille totale, l'espace utilisé et l'espace libre.
ℹ️ Mention d'affiliation
Le contenu de ce site contient des liens d'affiliation. Lorsqu'un visiteur achète un produit ou un service via l'un de ces liens, le site perçoit une commission du vendeur. Le montant payé par l'acheteur(il baisse lors des promotions ↓), lui, n'augmente pas. Les prix, remises et stocks indiqués correspondent à la date de rédaction et peuvent différer ; vérifiez-les donc auprès du vendeur avant d'acheter. Les produits sont choisis et évalués selon nos propres critères, et les commissions n'influencent ni l'ordre de présentation ni le contenu des évaluations.