Frage: Manchmal möchte ich einen Befehl (oder ein Shell-Skript) häufig (alle paar Sekunden) wiederholen. Gibt es einen besseren Weg, einen Unix-Befehl alle n Sekunden auszuführen (anstatt denselben Befehl immer wieder manuell einzugeben)?
Antwort: Mit dem Watch-Befehl können Sie einen Befehl ausführen und seine Ausgabe alle paar Sekunden anzeigen. Dies ist sehr hilfreich bei der Überwachung der Speichernutzung, Festplattennutzung usw.,
Sie können jeden Unix-Befehl mit dem Watch-Befehl ausführen. Der Überwachungsbefehl wird ausgeführt, bis Sie ihn entweder mit STRG+C beenden oder den Prozess beenden.
Beispiel 1:Mit watch ls auf eine Dateierstellung warten
Wenn Sie erwarten, dass eine Datei von einem Hintergrundprozess erstellt wird, oder wenn Sie erwarten, dass eine Protokolldatei immer größer wird, müssen Sie möglicherweise den Befehl ls mehrmals ausführen. Stattdessen können Sie den Befehl watch verwenden, der den Befehl ls alle 2 Sekunden ausführt, wie unten gezeigt.
$ watch ls Every 2.0s: ls Thu Apr 15 16:11:58 2010 flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb
Die erste Zeile der Ausgabe des watch-Befehls enthält die folgenden Header-Informationen:
- Alle 2.0s :Zeitintervall. d.h. ls wird alle 2 Sekunden ausgeführt.
- ls :Unix-Befehl, der alle 2 Sekunden ausgeführt wird.
- Thu Apr 15 16:11:58 2010 :das aktuelle Datum und die aktuelle Uhrzeit.
Die restlichen Zeilen sind die Ausgabe des Befehls, den watch ausführt. In diesem Beispiel wird die Ausgabe des Befehls ls angezeigt.
Beispiel 2:Details zum verwendeten und freien Speicher anzeigen (mit hervorgehobenen Unterschieden)
Die Option -d hebt den Unterschied zwischen aufeinanderfolgenden Updates hervor.
$ watch -d free -om Every 2.0s: free -om Thu Apr 15 16:11:59 2010 total used free shared buffers cached Mem: 992 878
114
0 135 379
Swap: 4095 8 4087
Wenn sich die Speicherausgabe auf Ihrem System nicht ändert, versuchen Sie die Option -d mit dem Datumsbefehl, um zu sehen, wie es funktioniert.
$ watch -d date
Hinweis :Wussten Sie, dass Sie die Änderungen in der oberen Befehlsausgabe hervorheben können?
Beispiel 3:Verfügbaren Speicherplatz anzeigen (alle 10 Sekunden wiederholen)
Standardmäßig verwendet der Watch-Befehl ein 2-Sekunden-Intervall, Sie können es mit der Option -n ändern. Das folgende Beispiel führt den Befehl df -h alle 10 Sekunden aus.
$ watch -n 10 df -h Every 10.0s: df -h Thu Apr 15 16:12:26 2010 Filesystem Size Used Avail Use% Mounted on /dev/sda7 30G 8.6G 20G 31% / tmpfs 497M 964K 496M 1% /dev/shm /dev/sda6 194M 22M 163M 12% /boot
Beispiel 4:Watchheader in der Ausgabe unterdrücken
Sie können die 1. Zeile der Watch-Befehlsausgabe mit der Option -t wie unten gezeigt unterdrücken.
$ watch -t ls flash-plugin-10.0.45.2-release.i386.rpm install_flash_player_10_linux.deb