Überprüfung der Auslastung eingehängter Dateisysteme

ShellBeginner
Jetzt üben

Einführung

In dieser Aufgabe schreiben Sie ein Shell-Skript, um zu prüfen, ob ein bestimmtes Dateisystem eingehängt ist. Ihr Skript nimmt den Namen eines Dateisystems (z. B. /dev/vda1) als Argument entgegen. Mithilfe des Befehls df ermittelt es, ob das Dateisystem aktuell eingebunden ist. Falls ja, gibt das Skript die prozentuale Auslastung sowie den verfügbaren freien Speicherplatz aus. Ist es nicht eingehängt, wird eine entsprechende Fehlermeldung angezeigt.

Überprüfung der Auslastung eingehängter Dateisysteme

Ihr Ziel ist es, ein Skript zu erstellen, das den Status eines angegebenen Dateisystems meldet. Das Skript akzeptiert ein einzelnes Befehlszeilenargument: den Namen des zu prüfenden Dateisystems.

Aufgaben

Ihr Skript muss die folgenden Aktionen ausführen:

  1. Ein einzelnes Befehlszeilenargument entgegennehmen, das ein Dateisystem repräsentiert (z. B. eine Quelle, die von df --output=source aufgelistet wird).
  2. Prüfen, ob das angegebene Dateisystem aktuell im System eingehängt ist.
  3. Wenn das Dateisystem eingehängt ist, eine Meldung ausgeben, die die prozentuale Auslastung und den verfügbaren freien Speicherplatz in Kilobyte (KB) anzeigt.
  4. Wenn das Dateisystem nicht eingehängt ist oder eine falsche Anzahl an Argumenten übergeben wurde, eine klare Fehlermeldung ausgeben.

Anforderungen

Sie müssen die folgenden Anforderungen erfüllen:

  • Das Skript muss mount.sh heißen und sich im Verzeichnis ~/project befinden.
  • Sie müssen den Befehl df verwenden, um Informationen über das Dateisystem zu sammeln.
  • Ihr Skript sollte Shell-Arrays und eine for-Schleife verwenden, um die Dateisystemdaten zu verarbeiten.
  • Das Skript sollte Fälle behandeln, in denen eine falsche Anzahl von Argumenten übergeben wird.

Beispiel

Hier ist ein Beispiel dafür, wie Ihr Skript funktionieren sollte, wenn es mit einem gültigen, eingehängten Dateisystem ausgeführt wird:

labex:project/ $ bash mount.sh <mounted-filesystem>
Filesystem <mounted-filesystem> is 19% used with 85748032 KB free.

Und hier ist ein Beispiel für ein Dateisystem, das nicht eingehängt ist:

labex:project/ $ bash mount.sh /nonexistent
Error: Filesystem /nonexistent is not mounted.

Hinweis: Die Werte für die prozentuale Auslastung und den freien Speicherplatz im Beispiel dienen nur zur Veranschaulichung. Ihre Ausgabe spiegelt den tatsächlichen Zustand des von Ihnen gewählten Dateisystems in Ihrer Umgebung wider.

Tipps

  • Sie können df --output=source verwenden, um eine Liste aller eingehängten Dateisystemquellen zu erhalten.
  • Um ein Array mit der Ausgabe eines Befehls zu füllen, können Sie die Syntax my_array=($(command)) verwenden.
  • Denken Sie daran, die Anzahl der an das Skript übergebenen Argumente mit $# zu prüfen.

Zusammenfassung

In dieser Aufgabe haben Sie erfolgreich ein Shell-Skript zur Überwachung der Dateisystemauslastung erstellt. Sie haben gelernt, wie man Befehlszeilenargumente verarbeitet, den Befehl df mit spezifischen Ausgabeoptionen nutzt und Arrays mit Befehlsausgaben füllt. Zudem haben Sie geübt, wie man mit einer for-Schleife durch Arrays iteriert, um Informationen über ein bestimmtes Dateisystem zu finden und anzuzeigen. Diese Aufgabe hat Ihre Fähigkeiten im Bereich Shell-Scripting, Textverarbeitung und Abruf von Systeminformationen gestärkt.

✨ Lösung prüfen und üben