Der unbekannte Befehl – „watch“ der Wiederholer

Der Befehl watch ist der erste Teil der Serie „Der unbekannte Befehl“. watch macht eigentlich etwas völlig einfaches was man auch per Shellscript recht einfach ersetzen könnte. Ohne Optionen wäre folgendes Script eine Simulation des Befehls:

#!/bin/bash
# Eine Simulation von watch
# Aufruf "watch-sim <Befehl> <Zeit in Sekunden>"
while true
do
        $1 
        sleep $2
        clear
done

Es wird eine Endlosschleife ausgeführt die alle $2 Sekunden den Befehl $1 ausführt und den Bildschirm löscht. Jedoch ist watch kein Shellscript sondern eine „normales“ Programm.

Das Konzept von Linux ist jedoch spezieller Befehl erfüllt eine Aufgabe und das richtig gut und daher hat watch eine Reihe Optionen die natürlich nicht mir dem obigen Shellscript simuliert werden und auch nicht sollen da wir ja den speziellen Befehl haben. Der Aufruf von watch erfolgt:

watch [Optionen] Kommando

Der Aufruf von watch date führt zu der Ausgabe:

Every 2,0s: date                                                  Marvin: Fri Jun  5 16:35:46 2020

Fr 5. Jun 16:35:46 CEST 2020

und wird alle 2 Sekunden aktualisiert. Den Aktuallisierungsintervall kann man durch die Option -n <Sekunden> einstellen was im obigen Script der Variablen $2 entspricht. watch kann jedoch mehr als das obige simple Script. Die Option -t blendet den Titel, also die Zeile mit Every beginnend, aus. Um die Ausgabewerte mit dem vorherigen Ausgabewert zu vergleichen gibt es die Option -d die die veränderten Werte unterlegt.

Ich selber benutze watch z.B. zur Überwachung der Internetverbindung wenn ich den Eindruck habe hier ist etwas sehr langsam.

watch -n 30 ping -c 1 google.de

Hier wird alle 30 Sekunden genau ein Ping (Option -c von ping) nach google.de (hier ist anzunehmen, dass dort immer eine schnelle Gegenstelle vorhanden ist) gesendet.

Der Befehl watch wird in einer Endlosschleife ausgeführt so das er üblicherweise durch CTRL-c (SIGINT) beendet werden muss. Mit der Option -g beendet sich watch jedoch selber, wenn sich ein Ausgabewert ändert, also der Wert der durch die Option -d unterlegt wird.

kais-universum.de