watch-opdracht: gebruik, interval met -n, markeren met -d en stoppen als de uitvoer verandert

TestomgevingRHEL-familieAlmaLinux 9.8procps-ng 3.3.17root-accountDebian 12 · procps-ng 4.0.2 gewoon account
Commando's voor processen · taakplanningwatchLocatie/usr/bin/watchGecontroleerd op 2026-11-05
Veranderingen in de uitvoer van een opdracht volgen

De watch-opdracht is een Linux-opdracht die een opgegeven opdracht elke 2 seconden opnieuw uitvoert en de uitvoer over het hele terminalscherm opnieuw tekent. Bij het volgen van bestanden met watch op een AlmaLinux 9-server, terwijl ze vanuit een ander venster werden gewijzigd, markeerde de optie -d de gewijzigde tekens en stopte de optie -g watch nadat de uitvoer was veranderd.

De uitvoer hieronder komt uit een werkmap op een AlmaLinux 9.8-server, uitgevoerd als root; op een Debian 12-server is alleen de versie gecontroleerd. De hostnaam in de kopregel bovenaan het scherm is vervangen door de voorbeeldwaarde server1, en de tijden staan in UTC.

1️⃣ De watch-opdracht gebruiken

  • ↪️ Standaardinterval van 2 seconden en stoppen met Ctrl+C

Zet achter watch de opdracht die opnieuw moet worden uitgevoerd; zonder opties voert watch die elke 2 seconden uit en vervangt het scherm door de nieuwe uitvoer. Bij het volgen van date verscheen bovenaan het scherm een kopregel, gevolgd door een lege regel en daarna de uitvoer van date.

watch date
Every 2.0s: date                                                   server1: Thu Oct 29 02:28:07 2026

Thu Oct 29 02:28:07 UTC 2026

Links in de kopregel staan het verversingsinterval en de lopende opdracht, rechts de hostnaam en het tijdstip van de laatste uitvoering. Toen hetzelfde scherm 2 seconden later opnieuw werd bekeken, waren de tijd in de kopregel en de uitvoer van date allebei veranderd.

Every 2.0s: date                                                   server1: Thu Oct 29 02:28:09 2026

Thu Oct 29 02:28:09 UTC 2026

watch blijft lopen tot je het zelf stopt, dus je stopt het met Ctrl+C. Na Ctrl+C verdween het watch-scherm en kwam de prompt terug. De exitcode die direct daarna werd gecontroleerd, was 0.

echo $?
0

watch is bedoeld om opdrachten te herhalen die één keer uitvoer geven en dan stoppen. Om te zien hoe het CPU- en geheugengebruik per proces verandert, is het top-commando, dat zelf het scherm opnieuw tekent, beter geschikt.

watch hoort bij het pakket procps-ng. De versie controleer je met [watch -v]; op de AlmaLinux 9.8-server was dat 3.3.17 en op de Debian 12-server 4.0.2.

watch -v
watch from procps-ng 3.3.17
watch -v
watch from procps-ng 4.0.2

2️⃣ Interval- en markeeropties van watch

  • ↪️ Interval met -n, markeren met -d, kopregel verbergen met -t

Met een aantal seconden achter -n verander je het verversingsinterval. Na [watch -n 1 date] stond links in de kopregel 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

Volgens de man-pagina kan het interval niet korter zijn dan 0,1 seconde; kleinere waarden worden 0,1 seconde. Als decimaalteken worden zowel een punt als een komma herkend.

-d markeert de tekens die verschillen van de vorige verversing. Terwijl size.log in de werkmap met [ls -l] werd gevolgd, werd vanuit een ander venster een regel aan het bestand toegevoegd.

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

Toen de bestandsgrootte van 7 naar 14 ging, werd alles vanaf de grootte-kolom tot het einde van de regel gemarkeerd. Het getal kreeg er een cijfer bij, waardoor alle tekens erachter één plaats opschoven. Bij de volgende verversing bleef de waarde gelijk en verdween de markering.

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

Om alles wat sinds de eerste uitvoering is veranderd gemarkeerd te houden, gebruik je [--differences=permanent] (volgens de man-pagina).

-t haalt de kopregel en de lege regel eronder weg, zodat alleen de uitvoer van de opdracht overblijft.

watch -t -n 1 date
Thu Oct 29 02:28:19 UTC 2026

3️⃣ Stopvoorwaarden en opties van de watch-opdracht

  • ↪️ -g bij veranderde uitvoer en -e bij fouten

-g stopt watch zodra de uitvoer van de opdracht verandert. Je gebruikt het om te wachten tot de inhoud van een statusbestand verandert voordat je doorgaat met de volgende taak.

watch -g -n 1 cat status.txt
Every 1.0s: cat status.txt                                         server1: Thu Oct 29 02:29:12 2026

running

Vanuit een ander venster werd de inhoud van status.txt met de opdracht hieronder veranderd in done.

printf 'done\n' > status.txt

Daarop stopte watch, kwam de prompt terug en was de exitcode 0.

echo $?
0

-e zet het scherm stil als de opdracht eindigt met een exitcode die niet 0 is. Bij het volgen met ls van een bestand dat niet in de werkmap bestaat, verschenen de foutuitvoer van ls en op de onderste regel van het scherm een melding dat een toetsdruk afsluit.

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

De tijd in de kopregel bleef staan op het moment direct na de uitvoering, en één toetsdruk stopte watch. De exitcode was deze keer 8.

echo $?
8

De man-pagina beschrijft exitcode 8 als een waarde die ook het geval omvat waarin de opdracht met een fout eindigde.

📌 Belangrijkste opties: resultaten uit dit artikel

OptieTaakResultaat in dit artikel
-n secondenVerandert het verversingsinterval (standaard 2 seconden)Kopregel veranderde in Every 1.0s
-dMarkeert tekens die verschillen van de vorige verversingBij grootte 7 → 14 vanaf die kolom tot het regeleinde gemarkeerd, bij de volgende verversing verdwenen
-tVerbergt de kopregel en de lege regel eronderAlleen één regel uitvoer van date blijft over
-gStopt watch als de uitvoer verandertGestopt na running → done, exitcode 0
-eZet het scherm stil als de opdracht met een fout eindigtGestopt na een toetsdruk, exitcode 8
-vToont versie-informatieAlmaLinux 9.8-server: watch from procps-ng 3.3.17, Debian 12-server: watch from procps-ng 4.0.2

📎 Andere opties: volgens de officiële handleiding

OptieTaak
-bGeeft een pieptoon als de opdracht eindigt met een exitcode die niet 0 is
-cVerwerkt ANSI-kleur- en stijlcodes, zodat de uitvoer van de opdracht zijn kleuren houdt
-pVoert per interval uit, zodat de verversingstijd niet naar achteren schuift
-xVoert de opdracht uit met exec in plaats van sh -c, zodat er minder aanhalingstekens nodig zijn
-wKnipt lange regels af in plaats van ze naar de volgende regel te laten doorlopen
--differences=permanentBlijft alles markeren wat sinds de eerste uitvoering is veranderd
-hToont de hulp

4️⃣ Aanhalingstekens en pipes bij de watch-opdracht

  • ↪️ Tussen enkele aanhalingstekens zetten en schijfgebruik volgen

Omdat watch de ontvangen opdracht met sh -c uitvoert, zet je een opdracht met een pipe(|) of $ in zijn geheel tussen enkele aanhalingstekens. Bij het volgen van het aantal bestanden in de werkmap met [ls | wc -l] stond de hele opdracht, inclusief pipe, in de kopregel.

watch -n 1 'ls | wc -l'
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:22 2026

6

Toen vanuit een ander venster nog een bestand werd gemaakt, veranderde het getal bij de volgende verversing van 6 in 7.

printf 'c\n' > q3.txt
Every 1.0s: ls | wc -l                                             server1: Thu Oct 29 02:30:24 2026

7

Typ je [watch -n 1 ls | wc -l] zonder aanhalingstekens, dan splitst de shell eerst de pipe en gaat de hele schermuitvoer van watch naar wc. Staat er een pipe in de opdracht die je wilt volgen, zet dan de hele opdracht tussen aanhalingstekens.

Voor $ geldt dezelfde regel. Na [watch -n 1 echo $$] zonder aanhalingstekens verving de huidige shell $$ eerst door een getal, en dat getal stond ook in de opdracht in de kopregel.

watch -n 1 echo $$
Every 1.0s: echo 3755802                                           server1: Thu Oct 29 02:29:37 2026

3755802

Tussen enkele aanhalingstekens wordt $$ ongewijzigd doorgegeven, dus de kopregel toonde echo $$ en bij elke verversing werd de PID van de nieuw gestarte sh getoond.

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

De PID van de huidige shell, gecontroleerd met [echo $$], was hetzelfde getal dat vastbleef bij de uitvoering zonder aanhalingstekens.

echo $$
3755802

Waarden die langzaam veranderen, zoals schijfgebruik, volg je met een interval van enkele seconden. du-commando: -s toont alleen het totaal en -h toont groottes in eenheden als K en M. Terwijl de werkmap met [du -sh .] werd gevolgd, werd vanuit een ander venster 8.001 bytes aan een logbestand toegevoegd, en bij de volgende verversing werd 28K 36K.

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     .

🔲 Simulator van de watch-opdracht

Voer in de simulator hieronder watch uit en wijzig daarna bestanden met de chips [🖊 Ander venster] om zelf te zien hoe het scherm verandert.

Simulator van de watch-opdrachtprocps-ng 3.3.17
[root@server work]#
Werkt alleen in je browser. Wijzig op het watch-scherm bestanden met de chips [Ander venster] en stop met Ctrl+C.

🔢 FAQ & aanbevolen content

Volgens de man-pagina gebruikt watch de waarde van de omgevingsvariabele WATCH_INTERVAL als interval als je daar seconden in zet en -n weglaat. Voor de waarde gelden dezelfde regels als voor -n, dus korter dan 0,1 seconde kan niet.

Volgens de man-pagina haalt watch stuurtekens uit de uitvoer voordat het die tekent. Wil je de kleuren zien bij het volgen van een opdracht met gekleurde uitvoer, voeg dan -c toe, zoals in [watch -c].

Volgens de man-pagina groeit bij een gewone uitvoering het deel van de seconde in de verversingstijd bij elke verversing een beetje. Met -p voert watch per interval uit, zodat dat deel bijna gelijk blijft.

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 6   +   10   =