Linux du-Befehl: Schätzung des Dateispeicherplatzes

LinuxLinuxBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir den du-Befehl (disk usage, dt. "Datenträgerauslastung") in Linux erkunden, ein leistungsstarkes Werkzeug zur Schätzung und Analyse der Datenträgerauslastung. Stellen Sie sich vor, Sie sind ein Systemadministrator, der mit der Verwaltung eines schnell wachsenden Dateiservers betraut ist. Ihre Aufgabe besteht darin, platzintensive Verzeichnisse und Dateien zu identifizieren, um die Speicherausnutzung zu optimieren. Der du-Befehl wird Ihr zuverlässiges Detektivwerkzeug bei dieser Untersuchung der Datenträgerauslastung sein.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 98% ist. Es hat eine positive Bewertungsrate von 100% von den Lernenden erhalten.

Grundlagen des du-Befehls verstehen

Der du-Befehl ist Ihre erste Verteidigungslinie, um die Datenträgerauslastung zu verstehen. Lassen Sie uns beginnen, indem wir seine grundlegende Funktionalität untersuchen.

Zunächst navigieren wir in das Projektverzeichnis, in dem wir unsere Untersuchung durchführen werden:

cd ~/project

Jetzt führen wir einen grundlegenden du-Befehl aus:

du

Tipps: Dateien und Ordner werden zufällig erstellt, und ihre Größen sind ebenfalls zufällig. Daher können die Ergebnisse bei jedem Ausführen unterschiedlich sein.

Sie werden eine Ausgabe ähnlich der folgenden sehen:

0      ./documents/reports
0      ./documents
10240  ./backups
0      ./logs/archive
0      ./logs/system
5120   ./logs/application
5120   ./logs
15360  .

Jede Zeile zeigt zwei Informationen an:

  1. Die Datenträgerauslastung (in KB)
  2. Der entsprechende Verzeichnispfad

Die Zahlen mögen zunächst verwirrend erscheinen. Sie stellen die Datenträgerauslastung in Kilobyte (KB) dar. Aber keine Sorge, wir können sie lesbarer machen!

Führen wir den Befehl mit der Option -h (human-readable, dt. "menschenlesbar") aus:

du -h

Jetzt werden Sie eine Ausgabe wie die folgende sehen:

0      ./documents/reports
0      ./documents
10M    ./backups
0      ./logs/archive
0      ./logs/system
5.0M   ./logs/application
5.0M   ./logs
15M    .

Die Option -h wandelt die Größen in ein für Menschen freundlicheres Format um (K für Kilobyte, M für Megabyte usw.). Dies macht es für uns Menschen viel einfacher, die Größen auf einen Blick zu verstehen.

Einige Dinge zu beachten:

  • Der Punkt . am Ende repräsentiert das aktuelle Verzeichnis (in diesem Fall ~/project).
  • Die Datenträgerauslastung eines Verzeichnisses umfasst die Auslastung aller seiner Unterverzeichnisse.
  • Die Größen, die Sie sehen, können etwas unterschiedlich sein, da das Einrichtungsskript zufällige Dateigrößen generiert.

Untersuchung spezifischer Verzeichnisse

Nachdem wir die Grundlagen verstanden haben, wollen wir uns nun genauer mit bestimmten Verzeichnissen befassen. Wir konzentrieren uns auf das logs-Verzeichnis, das anscheinend einen beträchtlichen Teil des Speichers belegt.

Zunächst wechseln wir in das logs-Verzeichnis:

cd ~/project/logs

Jetzt verwenden wir du, um dieses Verzeichnis zu untersuchen:

du -h

Möglicherweise sehen Sie eine Ausgabe wie diese:

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

Dies gibt uns eine Aufschlüsselung der Datenträgerauslastung für jedes Unterverzeichnis innerhalb des logs-Verzeichnisses. Aber was, wenn wir nur die Gesamtauslastung des logs-Verzeichnisses sehen möchten?

Wir können die Option --max-depth verwenden, um zu begrenzen, wie tief du in die Verzeichnisstruktur vordringt:

du -h --max-depth=0

Dadurch wird nur die Gesamtauslastung des aktuellen Verzeichnisses ausgegeben:

5.0M   .

Die Angabe --max-depth=0 teilt du mit, nur das aktuelle Verzeichnis anzuzeigen, ohne in Unterverzeichnisse einzusteigen.

Um nur die direkt untergeordneten Verzeichnisse anzuzeigen, verwenden Sie --max-depth=1:

du -h --max-depth=1

Ausgabe:

0      ./archive
0      ./system
5.0M   ./application
5.0M   .

Dies gibt uns einen besseren Überblick darüber, welche Unterverzeichnisse am meisten Speicherplatz beanspruchen.

Die Option --max-depth ist besonders nützlich, wenn Sie mit tief verschachtelten Verzeichnisstrukturen arbeiten und sich auf eine bestimmte Ebene der Hierarchie konzentrieren möchten.

Sortieren und Analysieren der Datenträgerauslastung

Nachdem wir die am meisten Speicherplatz beanspruchenden Unterverzeichnisse identifiziert haben, lernen wir nun, wie wir die Ergebnisse sortieren können. Dies hilft uns, schnell die größten Speicherplatzkonsumenten zu erkennen.

Wir verwenden den sort-Befehl in Kombination mit du. Keine Sorge, wenn Sie mit sort nicht vertraut sind – wir erklären, wie es funktioniert.

Zunächst sortieren wir die Ausgabe von du nach Größe:

du -h | sort -h

Dieser Befehl macht zwei Dinge:

  1. du -h: Führt den Befehl zur Anzeige der Datenträgerauslastung mit menschenlesbarer Ausgabe aus.
  2. |: Dies ist eine Pipe. Sie nimmt die Ausgabe des linken Befehls und gibt sie als Eingabe an den rechten Befehl weiter.
  3. sort -h: Sortiert die Eingabe numerisch basierend auf menschenlesbaren Größenangaben.

Möglicherweise sehen Sie eine Ausgabe wie diese:

0     ./archive
0     ./system
5.0M  .
5.0M  ./application

Die Ausgabe ist von kleinster zu größter Größe sortiert. Oft sind wir jedoch eher an den größten Verzeichnissen interessiert. Um die Sortierreihenfolge umzukehren, können wir die Option -r zu sort hinzufügen:

du -h | sort -hr

Ausgabe:

5.0M  ./application
5.0M  .
0     ./system
0     ./archive

Jetzt können wir deutlich sehen, welche Unterverzeichnisse innerhalb des logs-Ordners am meisten Speicherplatz beanspruchen, in absteigender Reihenfolge.

Um uns nur auf die direkt untergeordneten Verzeichnisse zu konzentrieren und diese zu sortieren, können wir die von uns gelernten Techniken kombinieren:

du -h --max-depth=1 | sort -hr

Dieser Befehl zeigt und sortiert nur die direkt untergeordneten Verzeichnisse des aktuellen Verzeichnisses.

Denken Sie daran, dass die Stärke der Kommandozeile darin besteht, einfache Befehle zu kombinieren, um komplexe Operationen auszuführen. Wir haben gerade du, sort und verschiedene Optionen kombiniert, um die Datenträgerauslastung schnell zu analysieren!

Finden der größten Dateien

Bisher haben wir uns auf die Größe von Verzeichnissen konzentriert. Aber was, wenn wir die spezifischen Dateien finden möchten, die am meisten Speicherplatz beanspruchen? Der du-Befehl arbeitet hauptsächlich mit Verzeichnissen, aber wir können ihn mit anderen Befehlen kombinieren, um große Dateien zu finden.

Wir verwenden den find-Befehl zusammen mit du. Keine Sorge, wenn Sie mit find nicht vertraut sind – wir erklären, wie es funktioniert.

Zunächst navigieren wir zurück in das Projektverzeichnis:

cd ~/project

Jetzt verwenden wir find und du, um die größten Dateien zu finden:

find. -type f -exec du -h {} + | sort -hr | head -n 5

Dieser Befehl mag komplex aussehen, aber lassen Sie uns ihn zerlegen:

  1. find. -type f: Findet alle Dateien (-type f) im aktuellen Verzeichnis (.) und seinen Unterverzeichnissen.
  2. -exec du -h {} +: Führt du -h für jede gefundene Datei aus. Das {} wird durch den Dateinamen ersetzt, und das + teilt find mit, so viele Dateinamen wie möglich an jeden Aufruf von du zu übergeben.
  3. sort -hr: Sortiert die Ergebnisse nach Größe in umgekehrter Reihenfolge (größte zuerst).
  4. head -n 5: Zeigt nur die obersten 5 Ergebnisse an.

Möglicherweise sehen Sie eine Ausgabe wie diese:

10M    ./backups/large_backup.bak
5.0M   ./logs/application/large_app_log.log
0      ./logs/system/placeholder.log
0      ./logs/archive/placeholder.log
0      ./logs/application/placeholder.log

Diese Ausgabe zeigt uns die fünf größten Dateien im Projektverzeichnis und ihre Größen.

Um uns auf Dateien größer als eine bestimmte Größe zu konzentrieren, können wir unseren Befehl ändern. Lassen Sie uns Dateien größer als 1 MB finden:

find. -type f -size +1M -exec du -h {} + | sort -hr

Dieser Befehl fügt -size +1M hinzu, um nach Dateien größer als 1 Megabyte zu filtern.

Diese Befehle sind unglaublich nützlich, wenn Sie versuchen, Speicherplatz auf dem Datenträger freizumachen. Sie ermöglichen es Ihnen, schnell die größten Dateien zu identifizieren, die oft die besten Kandidaten für die Löschung oder Archivierung sind.

Generieren eines Berichts zur Datenträgerauslastung

Als letzten Schritt unserer Untersuchung der Datenträgerauslastung erstellen wir nun einen umfassenden Bericht über die Datenträgerauslastung für das gesamte Projektverzeichnis. Dieser Bericht hilft uns, unsere Erkenntnisse zusammenzufassen und sie an das Team zu übermitteln.

Zunächst stellen wir sicher, dass wir uns im Projektverzeichnis befinden:

cd ~/project

Jetzt erstellen wir einen detaillierten Bericht mit du und speichern ihn in einer Datei:

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

Lassen Sie uns diesen Befehl zerlegen:

  1. du -h --max-depth=2: Zeigt die Datenträgerauslastung bis zu zwei Ebenen tief in menschenlesbarer Form an.
  2. sort -hr: Sortiert die Ergebnisse nach Größe in umgekehrter Reihenfolge (größte zuerst).
  3. > disk_usage_report.txt: Speichert die Ausgabe in einer Datei namens disk_usage_report.txt. Das > wird als Umleitungsoperator (redirection operator) bezeichnet - es nimmt die Ausgabe, die normalerweise auf dem Bildschirm angezeigt würde, und "leitet" sie stattdessen in eine Datei um.

Nachdem wir unseren Bericht erstellt haben, lassen wir uns seinen Inhalt anzeigen:

cat disk_usage_report.txt

Sie sollten eine umfassende Liste der Verzeichnisse und ihrer Größen sehen, sortiert von der größten zur kleinsten.

Um eine Zusammenfassung der größten Verzeichnisse zu erhalten, können wir den head-Befehl verwenden, um nur die obersten Einträge anzuzeigen:

head -n 10 disk_usage_report.txt

Dies zeigt Ihnen die 10 größten Verzeichnisse in Ihrem Projekt.

Dieser Bericht ist ein wertvolles Werkzeug, um zu identifizieren, welche Bereiche Ihres Projekts am meisten Datenträgerplatz beanspruchen. Er kann Ihnen helfen, Ihre Anstrengungen zur Optimierung der Speicherauslastung zu lenken oder in Diskussionen mit Ihrem Team über die Ressourcenallokation zu unterstützen.

Zusammenfassung

In diesem Lab haben wir den leistungsstarken du-Befehl und seine Anwendungen bei der Verwaltung des Datenträgerplatzes erkundet. Wir haben gelernt, wie man:

  1. Den grundlegenden du-Befehl verwendet, um die Datenträgerauslastung zu schätzen
  2. Die Ausgabe mit der Option -h menschenlesbar macht
  3. Spezifische Verzeichnisse untersucht und die Tiefe mit --max-depth begrenzt
  4. Die Ergebnisse der Datenträgerauslastung sortiert und analysiert
  5. Die größten Dateien in einem Verzeichnis findet
  6. Umfassende Berichte über die Datenträgerauslastung erstellt

Diese Fähigkeiten sind für jeden Systemadministrator oder fortgeschrittenen Benutzer, der Speicherressourcen verwaltet, unerlässlich.

Zusätzliche du-Optionen, die in diesem Lab nicht behandelt wurden, sind:

  • -s: Zeigt nur eine Gesamtgröße für jedes Argument an
  • -c: Erzeugt eine Gesamtsumme
  • -a: Zeigt die Datenträgerauslastung für Dateien sowie Verzeichnisse an
  • --time: Zeigt das Datum der letzten Änderung für jedes Verzeichnis an
  • --exclude=PATTERN: Schließt Dateien oder Verzeichnisse aus, die dem Muster (PATTERN) entsprechen