Wenn Sie jemals ein Linux-System in der Produktion oder auch nur einen privaten Server betrieben haben, werden Sie wissen, dass zu wenig Speicherplatz eines der frustrierendsten Probleme ist. Plötzlich funktionieren Ihre Anwendungen nicht mehr, Datenbanken schreiben keine neuen Daten mehr, und die Protokolldateien füllen sich wie ein führerloser Zug.
Die gute Nachricht ist, dass Linux macht es erstaunlich einfach Festplattennutzung zu überwachen und Probleme erkennen, bevor sie auftreten. Alles, was Sie brauchen, ist ein kleines Shell-Skript, ein bisschen Logik und vielleicht eine E-Mail-Benachrichtigung (oder eine Nachricht an Ihren Slack-Kanal, wenn Sie schick sind).
In diesem Artikel werden wir ein einfaches Skript erstellen, das die Festplattenauslastung überprüft und eine Warnung sendet, wenn sie über 80 % steigt.
Schritt 1: Festplattenauslastung unter Linux prüfen
Bevor Sie ein Skript schreiben, müssen Sie den aktuellen Speicherplatz auf Ihrem System mit dem Befehl df.
df -h
Die -h Flagge bedeutet “menschenlesbar”, d.h. anstatt rohe Datenblöcke anzuzeigen, formatiert es die Ausgabe in GB und MBdie viel leichter zu verstehen ist.

Im obigen Beispiel ist die Root-Partition / (/dev/sda1) liegt bei 45%was völlig in Ordnung ist, aber sobald es beginnt, über die 80%steigt, ist das unsere rote Fahne; es bedeutet, dass der Platz knapp wird.
Schritt 2: Erstellen Sie ein Skript zur Überwachung der Festplattenauslastung
Da Sie nun wissen, wie Sie die Festplattenauslastung manuell überprüfen können, sollten Sie dies mit einem Shell-Skript automatisieren. Skripte eignen sich hervorragend für solche Aufgaben, da sie Befehle, die wir normalerweise ausführen, mit ein wenig Logik verknüpfen.
Hier ist ein sehr einfaches Skript zur Überwachung Ihres Root-Systems (/) Partition:
#!/bin/bash
# Set threshold (percentage)
THRESHOLD=80
# Extract the usage percentage for root filesystem
USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
# Compare usage against threshold
if [ "$USAGE" -ge "$THRESHOLD" ]; then
echo "Warning: Disk usage is at ${USAGE}% on $(hostname)" | mail -s "Disk Alert: $(hostname)" [emailprotected]
fi
Lassen Sie uns aufschlüsseln, was hier passiert:
THRESHOLD=80→ Dies ist die Grenze, die uns interessiert, alles darüber ist zu riskant.df -h /→ Dies prüft nur das Root-Dateisystem.awk 'NR==2 {print $5}'→ Aus der df-Ausgabe wird der “Verwendung%” Spalte.sed 's/%//'→ Strips off the%Zeichen, damit wir es als Zahl behandeln können.- Die
ifBlock → Wenn die Festplattennutzung den Schwellenwert übersteigt, wird ein Alarm ausgelöst.
Momentan sendet das Skript eine E-Mail mit der Option Mail Befehl. Wenn Sie noch keine E-Mail auf Ihrem System eingerichtet haben, machen Sie sich keine Sorgen, ich zeige Ihnen, wie Sie sie einrichten.
Schritt 3: Überwachen Sie die Festplattenauslastung aller Partitionen
Die meisten Server verlassen sich nicht auf eine einzige Partition; stattdessen sind sie typischerweise in mehrere aufgeteilt, wie zum Beispiel /, /home, /varoder sogar /data. Wenn Sie nur die Wurzel im Auge behalten (/) Partition im Auge behalten, riskieren Sie, kritische Probleme an anderer Stelle zu übersehen, zum Beispiel, wenn /var sich mit Protokollen füllt, könnten Ihre Anwendungen fehlschlagen, obwohl / noch reichlich Platz hat.
Hier ist eine leicht verbesserte Version, die alle eingehängten Dateisysteme überprüft:
#!/bin/bash
THRESHOLD=80
# Loop through each filesystem listed by df
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
echo "Warning: Partition $PART is at ${USAGE}% on $(hostname)" | mail -s "Disk Alert: $(hostname)" [emailprotected]
fi
done
Anstatt nur die /zu überprüfen, durchläuft es jedes Dateisystem unter /dev/ und wenn eine Partition die 80%überschreitet, erhalten Sie eine Warn-E-Mail.
Schritt 4: Automatisieren des Skripts mit Cron
Cron ist ein einfacher Zeitplanungsdienst unter Linux, der Befehle zu festen Zeiten ausführen kann oder Intervallen. Sie können damit Ihr Skript zur Festplattenüberwachung automatisch ausführen lassen, beispielsweise jede Stunde.
Um es einzurichten, öffnen Sie Ihre crontab mit:
crontab -e
Fügen Sie diese Zeile am Ende ein:
0 * * * * /path/to/disk_check.sh
Dies bedeutet:
0→ laufen zu Beginn der Stunde.* * * *→ jede Stunde, jeden Tag./path/to/disk_check.sh→ Ersetzen Sie dies durch den tatsächlichen Speicherort Ihres Skripts.
Speichern und beenden Sie das Skript, und cron wird sich um den Rest kümmern. Von nun an wird Ihr Skript im Hintergrund die Festplattennutzung überprüfen und Sie warnen, wenn es schlecht aussieht.
Schritt 5: Testen des Skripts
Bevor Sie sich auf das Skript verlassen, ist es klug, es zu testen. Schließlich wollen Sie nicht warten, bis Ihre Festplatte tatsächlich zu 80 % voll ist, um herauszufinden, ob Ihr Warnsystem funktioniert.
Am einfachsten lässt sich das testen, indem man den Schwellenwert vorübergehend herabsetzt:
THRESHOLD=1
Auf diese Weise wird das Skript mit ziemlicher Sicherheit sofort einen Alarm auslösen, denn die meisten Partitionen sind mindestens 1% voll sind. Sobald Sie sich vergewissert haben, dass die E-Mails oder Protokolle funktionieren, ändern Sie die Einstellung wieder auf 80.
Wenn Sie noch nicht bereit sind, E-Mail zu konfigurieren, können Sie die mail Befehl mit etwas Einfacherem wie:
echo "Warning: Partition $PART is at ${USAGE}% on $(hostname)"
Dadurch wird nur die Warnung in Ihrem Terminal ausgegeben, was für eine schnelle Fehlersuche nützlich ist.
Schritt 6: Einrichten von E-Mail-Benachrichtigungen
Unser Skript verwendet den Befehl mail, um Benachrichtigungen zu versenden, aber dieses Tool ist nicht immer standardmäßig verfügbar. Sie müssen es zuerst installieren:
sudo apt install mailutils [On Debian] sudo yum install mailx [On RHEL]
Nach der Installation sollten Sie sicherstellen, dass Ihr Server tatsächlich E-Mails versenden kann, was einige zusätzliche Einstellungen wie die Konfiguration von Postfix, Gmail SMTPoder einen Drittanbieterdienst wie z. B. SendGrid.
Wenn Sie sich nicht sofort mit E-Mails befassen wollen, können Sie das Skript trotzdem nützlich machen, indem Sie die Warnmeldungen in einer Datei protokollieren:
echo "Disk usage alert: $PART at $USAGE%" >> /var/log/disk_alert.log
Auf diese Weise können Sie das Protokoll später überprüfen oder den folgenden Befehl verwenden, um Warnmeldungen in Echtzeit zu sehen.
tail -f /var/log/disk_alert.log
Schritt 7: Wann Sie über Shell-Skripte hinausgehen sollten
Shell-Skripte eignen sich hervorragend zum Erlernen und sind oft ausreichend für einen einzelnen Server oder ein kleines Projekt, aber wenn Sie mehrere Server betreiben oder eine detailliertere Überwachung benötigen, sollten Sie wahrscheinlich auf spezielle Überwachungswerkzeuge zurückgreifen.
- Nagios → Eines der ältesten und zuverlässigsten Überwachungssysteme.
- Zabbix Gut, wenn Sie Dashboards, Diagramme und einen zentralen Ort zur Überwachung vieler Server benötigen.
- Prometheus + Grafana → Ein modernes Setup, bei dem Prometheus sammelt Metriken, und Grafana erstellt schöne Dashboards, um sie zu visualisieren.
Zusammenfassung
Mit ein paar Zeilen Shell-Scripting haben Sie ein leichtes Festplattenüberwachungssystem erstellt, das Ihre Partitionen im Auge behält und Sie warnt, bevor es kritisch wird.
Durch das Festlegen eines Schwellenwerts, das Hinzufügen einer kleinen Logik und das Einplanen mit cron haben Sie eine Aufgabe automatisiert, die andernfalls ständige manuelle Überprüfungen erfordern würde, was weniger Überraschungen, weniger Ausfälle und mehr Seelenfrieden bedeutet.
Wenn Sie Ihre Linux-Automatisierung weiter ausbauen möchten, lesen Sie unseren entsprechenden Leitfaden: Tägliche Linux-Gesundheitsprüfungen mit einem Bash-Skript + Cron automatisieren.
