Jede Datei und jeder Ordner im Dateisystem hat eine so genannte Inode-Struktur, in der die Metadaten dieses Objekts gespeichert sind. Sie speichert den Eigentümer, die Eigentümergruppe, den Zeitpunkt der Änderung, der Erstellung und des Zugriffs auf die Datei sowie weitere Informationen. Sie kann nicht nur mit Hilfe von Debugging-Tools für das Dateisystem eingesehen werden. Bestimmte Informationen werden durch das Dienstprogramm ls
angezeigt, aber wenn Sie mehr benötigen, können Sie den Befehl stat
verwenden. Als Nächstes werden wir Ihnen erklären, wie Sie diesen Befehl in Linux verwenden können.
Die Syntax des Befehls ist einfach. Ihm müssen Optionen und der Pfad zu der Datei übergeben werden, für die Sie die Informationen sehen möchten:
$ stat [options] /path/to/file
Es ist nicht notwendig, Optionen zu übergeben, und es gibt auch nicht viele davon:
-L, dereference
- zeigt Dateiinformationen anstelle eines symbolischen Links;
-f, --file-system
- zeigt Informationen über das Dateisystem an, in dem sich die Datei befindet;
-c, --format
- ermöglicht die Angabe des Ausgabeformats anstelle des Standardformats, jede Datei wird in einer neuen Zeile ausgegeben;
--printf
- ähnlich wie --format
, nur für eine neue Zeile sollten Sie verwenden;
-t, --terse
- zeigt Informationen in einer sehr kurzen Form, in einer Zeile an;
--version
- zeigt die Version des Programms an.
Sehen wir uns einige Beispiele für die Verwendung an. Um Informationen über eine Datei zu erhalten, genügt es, das Programm ohne Optionen zu starten, indem man ihm den Pfad zu der Datei übergibt, zum Beispiel /etc/passwd
:
$ stat /etc/passwd
Programmausgabe:
Datei
- der Pfad zu der Datei, für die die Informationen angezeigt werden;
Größe
- die Größe der Datei in Bytes;
IO
Block - die Größe des Dateisystemblocks in Bytes;
Blöcke
- Anzahl der Dateisystemblöcke, die von der Datei belegt werden;
Gerät
- Kennung des Geräts, z. B. Festplatte, auf dem die Datei gespeichert ist;
Inode - eindeutige Inode-Nummer dieser Datei;
Links
- Anzahl der harten Links zu dieser Datei;
Zugriff - Zugriffsrechte
auf die Datei;
Uid
- Kennung und Name des Benutzers, der Eigentümer der Datei ist;
Gid
- Kennung und Name der Dateigruppe;
Zugriff
- Zeitpunkt des letzten Zugriffs auf die Datei;
Modify
- Zeitpunkt, zu dem der Inhalt der Datei zuletzt geändert wurde;
Geändert
- Zeitpunkt, zu dem die Dateiattribute oder der Dateiinhalt zuletzt geändert wurden;
Erstellt(Geburt
) - reserviert für die Anzeige des ursprünglichen Erstellungsdatums der Datei, aber noch nicht implementiert.
Wir müssen noch ein wenig mehr über das Zeitformat sprechen. Der Zeitpunkt des letzten Zugriffs auf die Datei ist zum Beispiel 2020-12-02 18:25:01.043831739 +0200. Diese Zeit wird unter Berücksichtigung der Zeitzone angezeigt. Und die Zahlen +0200 zeigen, dass die Zeitzone auf dem Computer, der diese Datei erstellt oder geändert hat, zwei Stunden über der UTC liegt, d. h. Europa/Kiew in der Winterzeit.
Wenn Sie versuchen, dem Dienstprogramm einen symbolischen Link zu übergeben, zeigt es nur Informationen aus dem Inode des Links selbst an:
$ stat /etc/passwdlin
Um Informationen über die Datei zu erhalten, auf die der Link verweist, verwenden Sie die Option -L
:
$ stat -L /etc/passwdlink
Sie können mehr als eine Datei übergeben:
$ stat /etc/passwd /etc/group
Um die Ausgabe zu formatieren, können Sie die folgenden Zeichenfolgen verwenden:
%A
- Zugriffsrechte;
%b
- Anzahl der belegten Blöcke;
%F
- Dateityp;
%g
- Kennung der Dateigruppe;
%G
- Name der Dateigruppe;
%i
- Inode-Bezeichner;
%n
- Dateiname;
%s
- Dateigröße;
%u
- Kennung des Dateieigentümers;
%U
- Name des Dateieigentümers;
%x
- Zeitpunkt des letzten Zugriffs;
%y
- Zeitpunkt der letzten Änderung des Inhalts;
%z
- Zeitpunkt der letzten Änderung von Inhalt oder Attributen.
Dies sind nicht alle möglichen Sequenzen, weitere finden Sie in der Hilfe des Dienstprogramms:
$ man stat
Lassen Sie sich zum Beispiel nur den Namen einer Datei und den Zeitpunkt der letzten Änderung ihres Inhalts anzeigen:
$ stat --printf "File %n has been modified %y " /etc/passwd /etc/group
Wenn Sie Informationen über das Dateisystem sehen wollen, in dem sich die Datei befindet, sollten Sie die Option -f
verwenden:
$ stat -f /etc/passwd
Sehen wir uns an, was die Felder, die das Dienstprogramm anzeigt, bedeuten:
Datei
- der Name der Datei;
Typ
- Typ des Dateisystems;
ID
- Bezeichner des Dateisystems;
Namenslänge(Namelen
) - die maximale Länge des Namens im Dateisystem;
Blockgröße
- die Menge der Daten in einer Lese- oder Schreibanforderung für optimale Geschwindigkeit;
Grundlegende Blockgröße
- physische Blockgröße im Dateisystem.
Es folgen die Gesamtzahl der Blöcke im System und die Anzahl der freien Blöcke.