Arbeiten mit Verzeichnissen und Dateisystemen
In diesem Schritt werden wir untersuchen, wie man den stat
-Befehl mit Verzeichnissen und Dateisystemen verwendet. Dieses Wissen ist wertvoll für Systemadministrationsaufgaben und das Verständnis der Speichernutzung.
Stat-Befehl mit Verzeichnissen
Der stat
-Befehl funktioniert mit Verzeichnissen auf die gleiche Weise wie mit Dateien. Erstellen wir ein Testverzeichnis und untersuchen wir seine Metadaten:
mkdir -p ~/project/test_dir
stat ~/project/test_dir
Sie sollten eine Ausgabe sehen, die der für Dateien ähnelt, aber im Feld Dateityp "directory" (Verzeichnis) anstelle von "regular file" (reguläre Datei) enthält.
Der Hauptunterschied zwischen Dateien und Verzeichnissen besteht darin, dass Verzeichnisse typischerweise mehr Links haben (einen für jedes unmittelbare Unterverzeichnis plus zwei für das Verzeichnis selbst und sein übergeordnetes Verzeichnis).
Erstellen wir ein Unterverzeichnis und sehen wir, wie sich dies auf die Linkanzahl auswirkt:
mkdir -p ~/project/test_dir/sub_dir
stat ~/project/test_dir
Sie sollten feststellen, dass die Linkanzahl um 1 erhöht wurde.
Der stat
-Befehl kann auch Informationen über Dateisysteme mithilfe der Option -f
oder --file-system
bereitstellen. Diese Option zeigt Details wie den Dateisystemtyp, die Blockgröße und Nutzungsstatistiken an.
Untersuchen wir das Dateisystem, das unser Projektverzeichnis enthält:
stat -f ~/project
Die Ausgabe sollte Folgendes enthalten:
- Dateisystemtyp
- Blockgröße
- Gesamtblöcke
- Freie Blöcke
- Verfügbare Blöcke (für Nicht-Root-Benutzer)
- Gesamt-Inodes
- Freie Inodes
Diese Informationen sind nützlich für die Überwachung der Festplattenauslastung und die Kapazitätsplanung.
Kombinieren von Optionen
Wir können die Dateisystemoption mit der benutzerdefinierten Formatoption kombinieren, um spezifische Informationen zu extrahieren:
stat -f -c 'File System: %T\nTotal size: %b blocks\nFree: %f blocks\nAvailable: %a blocks' ~/project
Dieser Befehl zeigt den Dateisystemtyp, die Gesamtblöcke, die freien Blöcke und die verfügbaren Blöcke an.
Symbolischen Links folgen
Standardmäßig zeigt der stat
-Befehl, wenn er auf einen symbolischen Link trifft, Informationen über den Link selbst an, nicht über die Datei, auf die er verweist. Erstellen wir einen symbolischen Link und sehen wir dies in Aktion:
echo "Target file content" > ~/project/target_file.txt
ln -s ~/project/target_file.txt ~/project/symlink.txt
stat ~/project/symlink.txt
Die Ausgabe sollte anzeigen, dass der Dateityp "symbolic link" (symbolischer Link) ist und die Größe die Länge des Pfads zur Zieldatei ist.
Um Informationen über die Zieldatei anstelle des Links anzuzeigen, verwenden Sie die Option -L
oder --dereference
:
stat -L ~/project/symlink.txt
Nun sollte die Ausgabe Informationen über die Zieldatei anzeigen, einschließlich ihrer Größe und ihres Typs als "regular file" (reguläre Datei).
Praktische Anwendung: Finden großer Verzeichnisse
Eine praktische Anwendung des stat
-Befehls ist das Auffinden großer Verzeichnisse. Erstellen wir ein Skript, das Verzeichnisgrößen berechnet:
echo '#!/bin/bash
for dir in "$@"; do
if [ -d "$dir" ]; then
size=$(du -s "$dir" | cut -f1)
echo "Directory: $dir, Size: $size KB"
else
echo "$dir is not a directory"
fi
done' > ~/project/dir_size.sh
chmod +x ~/project/dir_size.sh
Führen wir nun das Skript für unser Testverzeichnis aus:
~/project/dir_size.sh ~/project/test_dir
Dieses Skript verwendet den Befehl du
, um Verzeichnisgrößen zu berechnen, und ergänzt die Metadateninformationen, die vom stat
-Befehl bereitgestellt werden.
Indem Sie verstehen, wie man den stat
-Befehl mit Verzeichnissen und Dateisystemen verwendet, können Sie wertvolle Einblicke in die Speicherorganisation und -nutzung Ihres Linux-Systems gewinnen.