Commande watch : utilisation, intervalle -n, surlignage -d et arrêt quand la sortie change

Environnement de testFamille RHELAlmaLinux 9.8procps-ng 3.3.17Compte rootDebian 12 · procps-ng 4.0.2 compte standard
Commandes de processus et de planificationwatchEmplacement/usr/bin/watchVérifié le 2026-11-05
Surveiller les changements dans la sortie d'une commande

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

  • ↪️ Intervalle par défaut de 2 secondes et arrêt avec Ctrl+C

É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 date
Every 2.0s: date                                                   server1: Thu Oct 29 02:28:07 2026

Thu Oct 29 02:28:07 UTC 2026

La 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 2026

watch 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 $?
0

watch 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 -v
watch from procps-ng 3.3.17
watch -v
watch from procps-ng 4.0.2

2️⃣ Options d'intervalle et de surlignage de watch

  • ↪️ Intervalle -n, surlignage -d et -t pour masquer l'en-tête

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 date
Every 1.0s: date                                                   server1: Thu Oct 29 02:28:15 2026

Thu Oct 29 02:28:15 UTC 2026

D'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.log
Every 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.log
printf 'line 2\n' >> size.log

Quand 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.log

Pour 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 date
Thu Oct 29 02:28:19 UTC 2026

3️⃣ Conditions d'arrêt et options de la commande watch

  • ↪️ -g pour un changement de sortie et -e pour les erreurs

-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.txt
Every 1.0s: cat status.txt                                         server1: Thu Oct 29 02:29:12 2026

running

Depuis une autre fenêtre, la commande ci-dessous a remplacé le contenu de status.txt par done.

printf 'done\n' > status.txt

watch 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.txt
Every 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 exit

L'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 $?
8

La 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

OptionRôleRésultat dans cet article
-n secondesChange l'intervalle d'actualisation (2 secondes par défaut)L'en-tête est passé à Every 1.0s
-dSurligne les caractères qui diffèrent de l'actualisation précédenteTaille 7 → 14 : surligné de cette colonne à la fin de la ligne, disparu à l'actualisation suivante
-tMasque la ligne d'en-tête et la ligne vide en dessousIl ne reste qu'une ligne de sortie de date
-gArrête watch quand la sortie changeArrêt après running → done, code de sortie 0
-eFige l'écran quand la commande se termine par une erreurArrêt après l'appui sur une touche, code de sortie 8
-vAffiche les informations de versionwatch 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

OptionRôle
-bÉmet un bip quand la commande se termine avec un code de sortie différent de 0
-cInterprète les codes ANSI de couleur et de style pour garder les couleurs de la sortie
-pExécute à chaque intervalle pour que l'heure d'actualisation ne glisse pas
-xExécute la commande avec exec au lieu de sh -c, ce qui demande moins de guillemets
-wCoupe les longues lignes au lieu de les renvoyer à la ligne suivante
--differences=permanentContinue de surligner tout ce qui a changé depuis la première exécution
-hAffiche l'aide

4️⃣ Guillemets et tubes avec la commande watch

  • ↪️ Entourer de guillemets simples et surveiller l'espace disque

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

6

Aprè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.txt
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:24 2026

7

Si 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

3755802

Entre 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

3756270
Every 1.0s: echo $$                                                server1: Thu Oct 29 02:29:41 2026

3756333

Le 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 $$
3755802

Les 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.log
Every 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.

Simulateur de la commande watchprocps-ng 3.3.17
[root@server work]#
Fonctionne uniquement dans votre navigateur. Sur l'écran de watch, modifiez des fichiers avec les puces [Autre fenêtre] et arrêtez avec Ctrl+C.

🔢 FAQ & contenus recommandés

D'après la page man, si vous mettez un nombre de secondes dans la variable d'environnement WATCH_INTERVAL, cette valeur sert d'intervalle quand -n n'est pas indiqué. Elle suit les mêmes règles que -n et ne peut donc pas être inférieure à 0,1 seconde.

D'après la page man, watch retire les caractères de contrôle de la sortie avant de l'afficher. Pour voir les couleurs en surveillant une commande qui affiche en couleur, ajoutez -c, comme dans [watch -c].

D'après la page man, lors d'une exécution normale, la fraction de seconde de l'heure d'actualisation augmente un peu à chaque actualisation. Avec -p, watch exécute à chaque intervalle, et cette fraction reste presque la même.

ℹ️ 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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Prouvez que vous êtes humain : 2   +   7   =