watch-Befehl: Verwendung, Intervall mit -n, Hervorhebung mit -d und Beenden bei geänderter Ausgabe
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
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 dateEvery 2.0s: date server1: Thu Oct 29 02:28:07 2026
Thu Oct 29 02:28:07 UTC 2026Links 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 2026watch 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 $?0watch 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 -vwatch from procps-ng 3.3.17watch -vwatch from procps-ng 4.0.22️⃣ Intervall- und Hervorhebungsoptionen von watch
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 dateEvery 1.0s: date server1: Thu Oct 29 02:28:15 2026
Thu Oct 29 02:28:15 UTC 2026Laut 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.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.logAls 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.logUm 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 dateThu Oct 29 02:28:19 UTC 20263️⃣ Beendigungsbedingungen und Optionen des watch-Befehls
-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.txtEvery 1.0s: cat status.txt server1: Thu Oct 29 02:29:12 2026
runningIn einem anderen Fenster wurde der Inhalt von status.txt mit dem Befehl unten auf done geändert.
printf 'done\n' > status.txtDaraufhin 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.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 exitDie 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 $?8Die 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
| Option | Was es tut | Ergebnis in diesem Artikel | |
|---|---|---|---|
| -n Sekunden | Ändert das Aktualisierungsintervall (Standard 2 Sekunden) | Kopfzeile wechselte zu Every 1.0s | |
| -d | Hebt Zeichen hervor, die sich gegenüber der vorigen Aktualisierung unterscheiden | Bei Dateigröße 7 → 14 ab dieser Spalte bis Zeilenende hervorgehoben, bei der nächsten Aktualisierung verschwunden | |
| -t | Blendet die Kopfzeile und die Leerzeile darunter aus | Nur eine Zeile date-Ausgabe bleibt | |
| -g | Beendet watch, wenn sich die Ausgabe ändert | Nach running → done beendet, Exit-Code 0 | |
| -e | Hält den Bildschirm an, wenn der Befehl mit einem Fehler endet | Nach Tastendruck beendet, Exit-Code 8 | |
| -v | Gibt Versionsinformationen aus | AlmaLinux-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
| Option | Was es tut | |
|---|---|---|
| -b | Piept, wenn der Befehl mit einem Exit-Code ungleich 0 endet | |
| -c | Wertet ANSI-Farb- und Stilcodes aus, sodass die Befehlsausgabe ihre Farben behält | |
| -p | Führt im festen Intervall aus, damit sich die Aktualisierungszeit nicht nach hinten verschiebt | |
| -x | Führt den Befehl mit exec statt sh -c aus, sodass weniger Anführungszeichen nötig sind | |
| -w | Schneidet lange Zeilen ab, statt sie in die nächste Zeile umzubrechen | |
| --differences=permanent | Hebt alle Stellen, die sich seit der ersten Ausführung geändert haben, dauerhaft hervor | |
| -h | Gibt die Hilfe aus |
4️⃣ Anführungszeichen und Pipes beim watch-Befehl
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
6Als 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.txtEvery 1.0s: ls | wc -l server1: Thu Oct 29 02:30:24 2026
7Gibst 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
3755802In 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
3756270Every 1.0s: echo $$ server1: Thu Oct 29 02:29:41 2026
3756333Die PID der aktuellen Shell, geprüft mit [echo $$], war dieselbe Zahl, die beim Aufruf ohne Anführungszeichen fest stand.
echo $$3755802Langsam 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.logEvery 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.
🔢 FAQ & empfohlene Inhalte
Systemstatus
Linux-Befehl uptime (Serverlaufzeit & Load Average über 1, 5, 15 Minuten prüfen)
Der uptime-Befehl zeigt in einer Zeile, wie lange der Server läuft, und die durchschnittliche Last über 1, 5 und 15 Minuten.
Text
Linux-Befehle head und tail
Die Befehle head und tail geben den Anfang und das Ende einer Datei aus. Um das Ende eines wachsenden Logs zu verfolgen, verwendest du [tail -f].
Festplatte
df-Befehl
Der df-Befehl gibt für jedes Dateisystem Gesamtgröße, Belegung und freien Platz aus.
ℹ️ 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.