Warnung bei voller Platte

Warnung bei voller Platte

Mit einem Shell-Skript könnt ihr die Belegung von Massenspeichern überwachen und euch warnen lassen, bevor diese zu voll werden.>

Du möchtest nicht, dass der Massenspeicher auf deinem Computer vollläuft. Falls das passiert, zeigt sich ein Linux-System in einem Zustand zwischen “sehr bockig” und “ich mache hier gar nichts mehr”. Vielleicht ist dieser Artikel überflüssig, weil aktuelle Distributionen bzw. Dateisysteme von sich aus warnen, wenn der Speicher knapp wird.

Hier ist ein kleines Shell-Skript, mit dem man eine (oder mehrere) Warnungen ausgeben kann, bevor es zu spät ist:

#!/bin/bash
THRESHOLD=80

df -h | grep '^/dev/' | while read line; do
    USAGE=$(echo $line | awk '{print $5}' | sed 's/%//')
    PART=$(echo $line | awk '{print $6}')

    if [ "$USAGE" -ge "$THRESHOLD" ]; then
        notify-send "Partition $PART is at ${USAGE}% on $(hostname)"
        zenity --info --text="Partition $PART is at ${USAGE}% on $(hostname)"
    fi
done

Was macht das Skript? Der Befehl df -h liefert die Daten für die Plattenauslastung:

df -h

Dateisystem           Größe Benutzt Verf. Verw% Eingehängt auf
dev                    7.7G       0  7.7G    0% /dev
run                    7.8G    1.9M  7.7G    1% /run
efivarfs               184K     95K   85K   53% /sys/firmware/efi/efivars
/dev/nvme0n1p2         458G     44G  391G   11% /
tmpfs                  7.8G    9.4M  7.7G    1% /dev/shm
tmpfs                  1.0M       0  1.0M    0% /run/credentials/systemd-journald.service
tmpfs                  7.8G     72M  7.7G    1% /tmp
/dev/nvme0n1p1         300M    296K  300M    1% /boot/efi
tmpfs                  1.6G    328K  1.6G    1% /run/user/1000
192.168.1.49:/mnt/nas  1.8T    220G  1.5T   13% /mnt/nas

Uns interessieren nur die eingehängten Dateisysteme, deren Namen mit dev oder /dev beginnen. Das EFI-Zeugs oder irgendwelche temporären Laufwerke lassen wir ausser Acht. Das wird von grep ‘^/dev/’ erledigt. Dann holt das Skript für jede passende Zeile aus df -h die relevanten Spalten mit awk, nämlich die Belegung (USAGE) und den Mountpoint (PART). Für jede Zeile wird dann überprüft, ob sie über dem Limit von 80 % (THRESHOLD) liegt. Das sed ‘s/%//’ entfernt das Prozentzeichen, weil wir für den Vergleich eine Zahl und keinen String brauchen.

Nun gibt es im Skript zwei Varianten für die Ausgabe der Warnung: notify und zenity. Es gibt noch x andere Möglichkeiten, die Warnung auszugeben, z. B. via E-Mail oder Messenger-Nachricht, doch das führt hier zu weit. Mit notify-send schickt man einen Text an das Benachrichtigungssystem der Desktopumgebung. Das sollte überall funktionieren, ohne etwas Weiteres installieren zu müssen; probiert es im Terminal vorher aus. Zenity muss installiert werden, falls ihr ein richtiges grafisches Warnfenster haben möchtet. Zu Zenity habe ich einen eigenen Artikel geschrieben; das Ding kann mehr, als hier gezeigt wird.

Um das Skript zu testen, macht ihr die Datei im Terminal oder Dateimanager ausführbar und startet sie im Terminal mit diesem Befehl: ./diskfull.sh (je nachdem, wie ihr das Skript genannt habt). Falls die Belegung der zu testenden Massenspeicher unter 80 % liegt, seht ihr dann gar nichts. Daher könnt ihr im Skript THRESHOLD=1 einstellen. Dann solltet ihr mehrere Notifikationen und Zenity-Fenster sehen:

Warnung bei voller Plattehttps://pixabay.com/photos/waterfall-fountain-nature-iron-3212901/

Quelle: https://www.tecmint.com/monitor-disk-usage-bash-script/

Share the Post:

Related Posts