Unter Linux gehört watch zum festen Repertoire jedes Administrators: Der Befehl wiederholt ein Kommando in konfigurierbaren Abständen und zeigt die Ausgabe kontinuierlich im Terminal an. macOS liefert diesen Befehl nicht standardmäßig mit – doch mit einer einfachen Shell-Funktion in der .bashrc oder .zshrc lässt sich das schnell nachrüsten.
Die watch-Funktion für macOS
Folgende Funktion in die ~/.bashrc (bash) oder ~/.zshrc (zsh, Standard seit macOS Catalina) eintragen:
function watch {
while :; do
clear
date
echo
$@
sleep 2
done
}
Nach dem Speichern die Datei neu laden:
source ~/.zshrc # oder für bash: source ~/.bashrc
Verwendung der Funktion
Die Funktion wird genau wie das Linux-Original verwendet – einfach den gewünschten Befehl als Argument übergeben:
# Freien Speicherplatz alle 2 Sekunden anzeigen watch df -h # Netzwerkverbindungen überwachen watch netstat -an # Laufende Prozesse überwachen watch ps aux | grep nginx # Ping-Ergebnis kontinuierlich zeigen watch ping -c 1 8.8.8.8
Intervall konfigurierbar machen
Eine erweiterte Version der Funktion erlaubt es, das Aktualisierungsintervall als Parameter anzugeben – analog zur Linux-Option -n:
function watch {
local interval=2
if [[ "$1" == "-n" ]]; then
interval=$2
shift 2
fi
while :; do
clear
date
echo
$@
sleep "$interval"
done
}
Verwendung mit eigenem Intervall:
# Alle 5 Sekunden aktualisieren watch -n 5 df -h
Alternative: watch über Homebrew installieren
Wer Homebrew installiert hat, kann auch das echte GNU-watch nachinstallieren:
brew install watch
Das bietet dann auch Highlighting-Optionen (-d für Änderungen hervorheben) und weitere Flags aus der Linux-Welt.
Wer regelmäßig zwischen macOS und Linux wechselt, findet unter Linux & Server viele weitere nützliche Kommandozeilen-Tipps. Das Windows-Äquivalent ist im Beitrag Windows Batch Loop beschrieben.
