watch-opdracht: gebruik, interval met -n, markeren met -d en stoppen als de uitvoer verandert
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
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 dateEvery 2.0s: date server1: Thu Oct 29 02:28:07 2026
Thu Oct 29 02:28:07 UTC 2026Links 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 2026watch 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 $?0watch 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 -vwatch from procps-ng 3.3.17watch -vwatch from procps-ng 4.0.22️⃣ Interval- en markeeropties van watch
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 dateEvery 1.0s: date server1: Thu Oct 29 02:28:15 2026
Thu Oct 29 02:28:15 UTC 2026Volgens 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.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.logToen 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.logOm 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 dateThu Oct 29 02:28:19 UTC 20263️⃣ Stopvoorwaarden en opties van de watch-opdracht
-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.txtEvery 1.0s: cat status.txt server1: Thu Oct 29 02:29:12 2026
runningVanuit een ander venster werd de inhoud van status.txt met de opdracht hieronder veranderd in done.
printf 'done\n' > status.txtDaarop 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.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 exitDe 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 $?8De 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
| Optie | Taak | Resultaat in dit artikel | |
|---|---|---|---|
| -n seconden | Verandert het verversingsinterval (standaard 2 seconden) | Kopregel veranderde in Every 1.0s | |
| -d | Markeert tekens die verschillen van de vorige verversing | Bij grootte 7 → 14 vanaf die kolom tot het regeleinde gemarkeerd, bij de volgende verversing verdwenen | |
| -t | Verbergt de kopregel en de lege regel eronder | Alleen één regel uitvoer van date blijft over | |
| -g | Stopt watch als de uitvoer verandert | Gestopt na running → done, exitcode 0 | |
| -e | Zet het scherm stil als de opdracht met een fout eindigt | Gestopt na een toetsdruk, exitcode 8 | |
| -v | Toont versie-informatie | AlmaLinux 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
| Optie | Taak | |
|---|---|---|
| -b | Geeft een pieptoon als de opdracht eindigt met een exitcode die niet 0 is | |
| -c | Verwerkt ANSI-kleur- en stijlcodes, zodat de uitvoer van de opdracht zijn kleuren houdt | |
| -p | Voert per interval uit, zodat de verversingstijd niet naar achteren schuift | |
| -x | Voert de opdracht uit met exec in plaats van sh -c, zodat er minder aanhalingstekens nodig zijn | |
| -w | Knipt lange regels af in plaats van ze naar de volgende regel te laten doorlopen | |
| --differences=permanent | Blijft alles markeren wat sinds de eerste uitvoering is veranderd | |
| -h | Toont de hulp |
4️⃣ Aanhalingstekens en pipes bij de watch-opdracht
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
6Toen vanuit een ander venster nog een bestand werd gemaakt, veranderde het getal bij de volgende verversing van 6 in 7.
printf 'c\n' > q3.txtEvery 1.0s: ls | wc -l server1: Thu Oct 29 02:30:24 2026
7Typ 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
3755802Tussen 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
3756270Every 1.0s: echo $$ server1: Thu Oct 29 02:29:41 2026
3756333De PID van de huidige shell, gecontroleerd met [echo $$], was hetzelfde getal dat vastbleef bij de uitvoering zonder aanhalingstekens.
echo $$3755802Waarden 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.logEvery 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.
🔢 FAQ & aanbevolen content
Systeemstatus
Linux uptime-commando (uptime van de server & gemiddelde belasting over 1, 5 en 15 minuten)
De uptime-opdracht toont op één regel hoe lang de server al draait en de gemiddelde belasting over 1, 5 en 15 minuten.
Tekst
Linux head-commando en tail-commando
De opdrachten head en tail tonen het begin en het einde van een bestand. Om het einde van een groeiend logbestand te volgen, gebruik je [tail -f].
Schijf
df-commando
De df-opdracht toont per bestandssysteem de totale grootte, het gebruik en de vrije ruimte.
ℹ️ 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.