watch-Befehl: Verwendung, Intervall mit -n, Hervorhebung mit -d und Beenden bei geänderter Ausgabe

TestumgebungRHEL-FamilieAlmaLinux 9.8procps-ng 3.3.17root-KontoDebian 12 · procps-ng 4.0.2 normales Konto
Befehle für Prozesse · ZeitplanungwatchSpeicherort/usr/bin/watchGeprüft am 2026-11-05
Änderungen in der Befehlsausgabe beobachten

Der watch-Befehl ist ein Linux-Befehl, der einen angegebenen Befehl alle 2 Sekunden erneut ausführt und seine Ausgabe über den ganzen Terminalbildschirm neu zeichnet. Beim Beobachten von Dateien mit watch auf einem AlmaLinux-9-Server, während sie in einem anderen Fenster geändert wurden, hob die Option -d die geänderten Zeichen hervor, und die Option -g beendete watch, nachdem sich die Ausgabe geändert hatte.

Die Ausgaben unten stammen aus einem Arbeitsordner auf einem AlmaLinux-9.8-Server, ausgeführt als root; auf einem Debian-12-Server wurde nur die Version geprüft. Der Hostname in der Kopfzeile oben auf dem Bildschirm wurde durch den Beispielwert server1 ersetzt, und die Zeiten sind in UTC.

1️⃣ So verwendest du den watch-Befehl

  • ↪️ Standardintervall von 2 Sekunden und Beenden mit Ctrl+C

Schreib hinter watch den Befehl, der wiederholt werden soll; ohne Optionen führt watch ihn alle 2 Sekunden aus und ersetzt den Bildschirm durch die neue Ausgabe. Beim Beobachten von date erschien oben auf dem Bildschirm eine Kopfzeile, nach einer Leerzeile folgte die Ausgabe von 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 der Kopfzeile stehen das Aktualisierungsintervall und der laufende Befehl, rechts der Hostname und die Zeit der letzten Ausführung. Als derselbe Bildschirm 2 Sekunden später erneut geprüft wurde, hatten sich die Zeit in der Kopfzeile und die Ausgabe von date gemeinsam geändert.

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

Thu Oct 29 02:28:09 UTC 2026

watch läuft weiter, bis du es selbst beendest, also beendest du es mit Ctrl+C. Nach Ctrl+C verschwand der watch-Bildschirm und die Eingabeaufforderung kam zurück. Der direkt danach geprüfte Exit-Code war 0.

echo $?
0

watch ist dafür gedacht, Befehle zu wiederholen, die einmal ausgeben und sich dann beenden. Um zu sehen, wie sich CPU- und Speichernutzung je Prozess ändern, eignet sich der top-Befehl, der seinen Bildschirm selbst neu zeichnet, besser.

watch gehört zum Paket procps-ng. Die Version prüfst du mit [watch -v]; auf dem AlmaLinux-9.8-Server war es 3.3.17, auf dem 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️⃣ Intervall- und Hervorhebungsoptionen von watch

  • ↪️ Intervall mit -n, Hervorhebung mit -d, Kopfzeile ausblenden mit -t

Mit einer Sekundenzahl hinter -n änderst du das Aktualisierungsintervall. Nach dem Aufruf [watch -n 1 date] zeigte die linke Seite der Kopfzeile 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

Laut man-Seite lässt sich das Intervall nicht kürzer als 0,1 Sekunden einstellen; kleinere Werte werden auf 0,1 Sekunden gesetzt. Als Dezimaltrennzeichen werden Punkt und Komma erkannt.

-d hebt die Zeichen hervor, die sich gegenüber der vorigen Aktualisierung unterscheiden. Während size.log im Arbeitsordner mit [ls -l] beobachtet wurde, kam in einem anderen Fenster eine Zeile zu der Datei hinzu.

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

Als sich die Dateigröße von 7 auf 14 änderte, wurde alles von der Größenspalte bis zum Zeilenende hervorgehoben. Die Zahl bekam eine Stelle mehr, sodass alle Zeichen dahinter um eine Stelle verrutschten. Bei der nächsten Aktualisierung blieb der Wert gleich und die Hervorhebung verschwand.

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

Um alles, was sich seit der ersten Ausführung geändert hat, dauerhaft hervorzuheben, verwendest du [--differences=permanent] (laut man-Seite).

-t entfernt die Kopfzeile und die Leerzeile darunter, sodass nur die Ausgabe des Befehls bleibt.

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

3️⃣ Beendigungsbedingungen und Optionen des watch-Befehls

  • ↪️ -g bei geänderter Ausgabe und -e bei Fehlern

-g beendet watch, sobald sich die Ausgabe des Befehls ändert. Damit wartest du, bis sich der Inhalt einer Statusdatei ändert, bevor du zum nächsten Schritt übergehst.

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

running

In einem anderen Fenster wurde der Inhalt von status.txt mit dem Befehl unten auf done geändert.

printf 'done\n' > status.txt

Daraufhin endete watch, die Eingabeaufforderung kam zurück, und der Exit-Code war 0.

echo $?
0

-e hält die Bildschirmaktualisierung an, wenn der Befehl mit einem Exit-Code ungleich 0 endet. Beim Beobachten einer Datei, die im Arbeitsordner nicht existiert, mit ls erschienen die Fehlerausgabe von ls und in der untersten Bildschirmzeile der Hinweis, dass ein Tastendruck beendet.

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

Die Zeit in der Kopfzeile blieb auf dem Zeitpunkt direkt nach der Ausführung stehen, und ein Tastendruck beendete watch. Der Exit-Code war diesmal 8.

echo $?
8

Die man-Seite beschreibt Exit-Code 8 als Wert, der den Fall einschließt, dass der Befehl mit einem Fehler endete.

📌 Wichtige Optionen: Ergebnisse aus diesem Artikel

OptionWas es tutErgebnis in diesem Artikel
-n SekundenÄndert das Aktualisierungsintervall (Standard 2 Sekunden)Kopfzeile wechselte zu Every 1.0s
-dHebt Zeichen hervor, die sich gegenüber der vorigen Aktualisierung unterscheidenBei Dateigröße 7 → 14 ab dieser Spalte bis Zeilenende hervorgehoben, bei der nächsten Aktualisierung verschwunden
-tBlendet die Kopfzeile und die Leerzeile darunter ausNur eine Zeile date-Ausgabe bleibt
-gBeendet watch, wenn sich die Ausgabe ändertNach running → done beendet, Exit-Code 0
-eHält den Bildschirm an, wenn der Befehl mit einem Fehler endetNach Tastendruck beendet, Exit-Code 8
-vGibt Versionsinformationen ausAlmaLinux-9.8-Server: watch from procps-ng 3.3.17, Debian-12-Server: watch from procps-ng 4.0.2

📎 Weitere Optionen: laut offiziellem Handbuch

OptionWas es tut
-bPiept, wenn der Befehl mit einem Exit-Code ungleich 0 endet
-cWertet ANSI-Farb- und Stilcodes aus, sodass die Befehlsausgabe ihre Farben behält
-pFührt im festen Intervall aus, damit sich die Aktualisierungszeit nicht nach hinten verschiebt
-xFührt den Befehl mit exec statt sh -c aus, sodass weniger Anführungszeichen nötig sind
-wSchneidet lange Zeilen ab, statt sie in die nächste Zeile umzubrechen
--differences=permanentHebt alle Stellen, die sich seit der ersten Ausführung geändert haben, dauerhaft hervor
-hGibt die Hilfe aus

4️⃣ Anführungszeichen und Pipes beim watch-Befehl

  • ↪️ In einfache Anführungszeichen setzen und Speicherplatz beobachten

watch führt den übergebenen Befehl mit sh -c aus. Einen Befehl mit einer Pipe(|) oder einem $ setzt du deshalb komplett in einfache Anführungszeichen. Beim Beobachten der Dateianzahl im Arbeitsordner mit [ls | wc -l] stand der ganze Befehl samt Pipe in der Kopfzeile.

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

6

Als in einem anderen Fenster eine weitere Datei angelegt wurde, wechselte die Zahl bei der nächsten Aktualisierung von 6 auf 7.

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

7

Gibst du [watch -n 1 ls | wc -l] ohne Anführungszeichen ein, trennt die Shell zuerst die Pipe, und die gesamte Bildschirmausgabe von watch geht an wc. Hat der zu beobachtende Befehl eine Pipe, setzt du den ganzen Befehl deshalb in Anführungszeichen.

Für $ gilt dieselbe Regel. Beim Aufruf [watch -n 1 echo $$] ohne Anführungszeichen ersetzte die aktuelle Shell $$ zuerst durch eine Zahl, und diese Zahl stand auch im Befehl in der Kopfzeile.

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

3755802

In einfachen Anführungszeichen wird $$ unverändert weitergegeben, daher zeigte die Kopfzeile echo $$, und bei jeder Aktualisierung wurde die PID der neu gestarteten sh ausgegeben.

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

Die PID der aktuellen Shell, geprüft mit [echo $$], war dieselbe Zahl, die beim Aufruf ohne Anführungszeichen fest stand.

echo $$
3755802

Langsam veränderliche Werte wie die Speicherplatznutzung beobachtest du mit einem Intervall von einigen Sekunden. du-Befehl: -s gibt nur die Summe aus, -h zeigt Größen in Einheiten wie K und M. Während der Arbeitsordner mit [du -sh .] beobachtet wurde, kamen in einem anderen Fenster 8.001 Byte zu einer Logdatei hinzu, und bei der nächsten Aktualisierung wurde aus 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     .

🔲 watch-Befehl-Simulator

Führ im Simulator unten watch aus und ändere dann mit den Chips [🖊 Anderes Fenster] Dateien, um selbst zu sehen, wie sich der Bildschirm ändert.

watch-Befehl-Simulatorprocps-ng 3.3.17
[root@server work]#
Läuft nur in deinem Browser. Auf dem watch-Bildschirm änderst du Dateien mit den Chips [Anderes Fenster] und beendest mit Ctrl+C.

🔢 FAQ & empfohlene Inhalte

Laut man-Seite verwendet watch den Wert der Umgebungsvariablen WATCH_INTERVAL als Intervall, wenn du dort Sekunden einträgst und -n nicht angibst. Für den Wert gelten dieselben Regeln wie für -n, er kann also nicht kürzer als 0,1 Sekunden sein.

Laut man-Seite entfernt watch Steuerzeichen aus der Ausgabe, bevor es sie zeichnet. Willst du beim Beobachten eines Befehls mit farbiger Ausgabe die Farben sehen, gib -c mit an, etwa [watch -c].

Laut man-Seite wächst bei einem normalen Lauf der Sekundenbruchteil der Aktualisierungszeit mit jeder Aktualisierung ein wenig. Mit -p führt watch im festen Intervall aus, sodass dieser Bruchteil fast gleich bleibt.

ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 7   +   8   =