Warnung bei voller Platte

  Ralf Hersel   Lesezeit: 3 Minuten  🗪 1 Kommentar Auf Mastodon ansehen

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

warnung bei voller platte

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:

Die Notifikation verschwindet nach ein paar Sekunden, während das Zenity-Fenster sichtbar bleibt, bis ihr auf OK klickt. Es ist Geschmackssache, für welche Variante ihr euch entscheidet.

Falls ihr nur ein Laufwerk überprüfen möchtet, könnt ihr den grep-Befehl im Skript spezifischer gestalten. Die Schleife würde ich beibehalten, weil ihr damit flexibler seid und später weitere Laufwerke für den Test hinzufügen könnt.

Sobald das Ergebnis euren Erwartungen entspricht, könnt ihr das Skript beim Booten automatisch starten lassen. Wie man das macht, hängt von eurer Desktopumgebung ab. Manche bieten dafür eine grafische Anwendung an, bei anderen, z. B. GNOME, muss man eine *.desktop-Datei im Verzeichnis ~/.config/autostart/ anlegen.

Titelbild: https://pixabay.com/photos/waterfall-fountain-nature-iron-3212901/

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

Tags

Massenspeicher, Plattenplatz, Skript, Benachrichtigung, Zenity

Col.Row
Geschrieben von Col.Row am 7. Oktober 2025 um 10:11

Moyen,

sehr interessant.

Vielleicht sollte man auch erwähnen, dass die meisten großen Desktopumgebungen bereits eine Prüfung für volllaufende Datenträger mitbringen. Die ist oft nur unpraktisch voreingestellt; vgl. [https://wiki.ubuntuusers.de/Howto/Datentr%C3%A4ger_voll/#Benachrichtigung-ueberpruefen(https://wiki.ubuntuusers.de/Howto/Datenträger voll/#Benachrichtigung überprüfen)]

Was man mit der mitgelieferten Überprüfung jedoch nicht kann, sind unterschiedliche Schwellenwerte. Auf meiner kleinen /boot sind 80% bereits kritisch, aber in meiner großen / erst bei 97% – Und das auch nur, weil kein weitere VM mehr aufgesetzt werden kann, sonst ginge noch mehr.

Ich habe diesen Artikel zum Anlass genommen meine Überwachung wiederholt zu überprüfen. Da muss ich versehentlich auf „Dieses Laufwerk von der Prüfung ausnehmen“ o. ä. gekommen sein. Jetzt habe ich ein Skript im autostart, dass dieses Versehen erkennt und zurücksetzt.

Und das hiesige Skript wird bei mir Basis für die Überwachung von /boot, falls ich mal ein Aufräumen vergessen haben sollte. Also Danke für den Artikel. Es zeigt sich mal wieder, dass man auch bereits erledigt geglaubte Themen noch mal durchdenken kann.

Ach, und wenn wir schon dabei sind: „notify-send“ ist bspw. bei Ubuntu nicht bei allen Geschmacksrichtungen dabei, sondern „gdbus“ – [https://wiki.ubuntuusers.de/Benachrichtigungsdienst/#Eigene-Nachrichten-ausgeben()]

Es lebe die Vielfalt! XD