So verwenden Sie den stat-Befehl unter Linux

Inhalt

Ein Linux-Terminal auf einem Desktop im Ubuntu-Stil.

El Linux stat Der Befehl zeigt Ihnen viel mehr Details als ls macht es. Werfen Sie mit diesem informativen und konfigurierbaren Dienstprogramm einen Blick hinter die Kulissen. Wir zeigen Ihnen, wie Sie es verwenden.

stat führt dich hinter die Kulissen

das ls Der Befehl ist ausgezeichnet in dem, was er tut, und vor langer Zeit, aber mit linux, Es scheint immer einen Weg zu geben, tief zu graben und zu sehen, was unter der Oberfläche ist. UND, häufig, es geht nicht nur darum, die Kante des Teppichs anzuheben. Sie können die Dielen zerbrechen und später ein Loch graben. Sie können Linux wie eine Zwiebel schälen.

ls zeigt Ihnen viele Informationen zu einer Datei an, wie welche Berechtigungen darauf eingestellt sind, wie groß es ist und ob es eine Datei oder ein symbolischer Link ist. Um diese Informationen anzuzeigen ls lese es von a Dateisystemstruktur namens inode.

Jede Datei und jedes Verzeichnis hat einen Inode. Inode hält Metadaten zur Datei, wie welche Dateisystemblöcke es belegt und welche Datumsstempel mit der Datei verknüpft sind. Die Inode ist wie ein Bibliotheksausweis für die Datei. Aber ls es wird Ihnen nur ein Teil der Informationen angezeigt. Um alles zu sehen, wir müssen die benutzen stat Befehl.

Mögen ls , das stat Der Befehl hat viele Optionen. Dies macht es zu einem großartigen Kandidaten für Aliasing.. Sobald Sie eine bestimmte Reihe von Alternativen entdeckt haben, die stat Gib dir das gewünschte Ergebnis, wickeln Sie es in eine Alias- oder Shell-Funktion ein. Dies macht die Verwendung viel bequemer und Sie müssen sich keine geheimnisvollen Befehlszeilenalternativen merken.

VERBUNDEN: So verwenden Sie den Befehl ls, um Dateien und Verzeichnisse in Linux aufzulisten

Ein schneller Vergleich

Lass uns benutzen ls um uns eine lange Liste zu geben -l Möglichkeit) mit menschenlesbaren Dateigrößen ( -h Möglichkeit):

ls -lh ana.h

Von links nach rechts, Die von ls bereitgestellten Informationen sind:

  • Das erste Zeichen ist ein Bindestrich "-" und dies sagt uns, dass die Datei eine normale Datei und kein Socket ist, symbolischer Link oder andere Art von Objekt.
  • Eigentümer, die Gruppe und andere Berechtigungen werden im Oktalformat aufgelistet.
  • Die Anzahl der physischen Links, die auf diese Datei verweisen. Für diesen Fall, und in den meisten Fällen, wird einer sein.
  • Der Eigentümer der Datei ist Dave.
  • Der Gruppenbesitzer ist Dave.
  • Die Dateigröße ist 802 Bytes.
  • Die Datei wurde zuletzt am Freitag geändert 13 von Dezember bis 2015.
  • Der Dateiname ist ana.c.

Schauen wir mal mit stat :

stat ana.h

Die Informationen, die wir erhalten von stat es ist:

  • Verfahren: Der Name der Datei. Im Allgemeinen, ist derselbe wie der Name, den wir ihm geben. stat auf der Kommandozeile, aber es kann anders sein, wenn wir einen symbolischen Link betrachten.
  • Größe: Die Größe der Datei in Bytes.
  • Blöcke: Die Anzahl der Dateisystemblöcke, die die Datei auf der Festplatte speichern muss.
  • Block IO: Die Größe eines Dateisystemblocks.
  • Dateityp: Der Objekttyp, den die Metadaten beschreiben. Die gängigsten Typen sind Dateien und Verzeichnisse, aber es können auch Links sein, benannte Muffen oder Rohre.
  • Gerät: Die Gerätenummer in hexadezimal und dezimal. Dies ist die ID der Festplatte, auf der die Datei gespeichert ist.
  • Inodo: Inode-Nummer. Mit anderen Worten, die Identifikationsnummer dieser Inode. Zusammen, Inode-Nummer und Gerätenummer identifizieren eine Datei eindeutig.
  • Links: Diese Zahl gibt an, wie viele physische Links auf diese Datei verweisen. Jeder physische Link hat seinen eigenen Inode. Dann, Eine andere Möglichkeit, über diese Zahl nachzudenken, ist, wie viele Inodes auf diese Datei verweisen. Jedes Mal, wenn ein physischer Link erstellt oder gelöscht wird, diese Zahl wird nach oben oder unten angepasst. Wenn es null erreicht, die Datei selbst wurde entfernt und der Inode wird entfernt. Wenn du benutzt stat in einem Verzeichnis, diese Zahl steht für die Anzahl der Dateien im Verzeichnis, einschließlich der “.” Der Eintrag für das aktuelle Verzeichnis und der Eintrag “..” für das Home-Verzeichnis.
  • Betreten: Dateiberechtigungen werden oktal und traditionell angezeigt. rwx (lesen, schreiben, Formate ausführen).
  • Uid: Benutzer-ID und Kontoname des Eigentümers.
  • Handbuch: Gruppen-ID und Name des Eigentümerkontos.
  • Betreten: Der Zugriffszeitstempel. Es ist nicht so einfach, wie es scheinen mag. Moderne Linux-Distributionen verwenden ein Schema namens relatime, was du versuchst Optimieren Sie die erforderlichen Schreibvorgänge auf der Festplatte, um die Zugriffszeit zu aktualisieren. Knapp, die Zugriffszeit wird aktualisiert, wenn sie vor der geänderten Zeit liegt.
  • Ändern: Der Zeitstempel der Änderung. Dies ist der Moment, in dem die Datei Inhalt wurden zuletzt geändert. (Glücklicherweise, der Inhalt dieser Datei wurde zuletzt vor vier Jahren geändert).
  • Ändern: Der Zeitstempel der Veränderung. Dies ist der Moment, in dem die Datei Attribute Ö Inhalt wurden zuletzt geändert. Wenn Sie eine Datei ändern, indem Sie neue Dateiberechtigungen festlegen, der Zeitstempel der Änderung wird aktualisiert (weil die Datei Attribute sie haben sich verändert), aber der geänderte Zeitstempel wird nicht aktualisiert (weil die Datei Inhalt sie haben sich nicht geändert).
  • Geburt: Reserviert, um das ursprüngliche Erstellungsdatum der Datei anzuzeigen, aber das ist in Linux nicht implementiert.

Zeitstempel verstehen

Zeitstempel sind zeitzonensensitiv. das -0500 am Ende jeder Zeile zeigt an, dass diese Datei auf einem Computer in a . erstellt wurde abgestimmte Weltzeit (koordinierte Weltzeit) Zeitzone, die der Zeitzone des aktuellen Computers fünf Stunden voraus ist. Dann, dieser Computer liegt fünf Stunden hinter dem Computer zurück, der diese Datei erstellt hat. Genau genommen, Die Datei wurde auf einem Computer in der britischen Zeitzone erstellt und wir sehen sie hier auf einem Computer in der US Eastern Standard Time Zone. UU.

Das Ändern und Ändern von Zeitstempeln kann zu Verwirrung führen, da, für die Uneingeweihten, Ihre Namen klingen, als würden sie dasselbe bedeuten.

Lass uns benutzen chmod um Dateiberechtigungen für eine Datei namens . zu ändern ana.c. Lasst uns alle dazu bringen, es zu schreiben. Dies hat keinen Einfluss auf den Inhalt der Datei, aber es wirkt sich auf die Dateiattribute aus.

chmod +wana.c

Und später werden wir verwenden stat um die Zeitstempel zu sehen:

stat ana.c

Der Zeitstempel der Änderung wurde aktualisiert, aber die modifizierte nein.

das geändert Der Zeitstempel wird nur aktualisiert, wenn der Inhalt der Datei geändert wird. das Veränderung Der Zeitstempel wird sowohl für Inhaltsänderungen als auch für Attributänderungen aktualisiert.

Verwenden von Statistiken mit vielen Dateien

Um einen statistischen Bericht über mehrere Dateien gleichzeitig zu erstellen, übergeben Sie die Dateinamen an stat auf der Kommandozeile:

stat ana.h ana.o

Verwenden stat in einer Reihe von Dateien, Mustervergleich verwenden. Das Fragezeichen “?” steht für jedes einzelne Zeichen und das Sternchen “*” Stellt eine beliebige Zeichenfolge dar. Wir können sagen stat Gehen Sie folgendermaßen vor, um aufgerufene Dateien zu melden “Anna” mit einer einstelligen Durchwahl, mit diesem Befehl:

stat ana.?

Verwenden von Statistiken zum Erstellen von Berichten zu Dateisystemen

stat kann über den Status von Dateisystemen berichten, sowie den Status der Dateien. das -f (Dateisystem) Option sagt stat um das Dateisystem zu melden, in dem sich die Datei befindet. Bitte beachten Sie, dass wir ein Verzeichnis auch als “/” ein stat anstelle eines Dateinamens.

stat -f ana.c

Information stat gibt uns ist:

  • Verfahren: Der Name der Datei.
  • ICH WÜRDE: Die Dateisystem-ID in hexadezimaler Schreibweise.
  • Namelen: Die maximal zulässige Länge für Dateinamen.
  • Schreibt: Die Art des Dateisystems.
  • Block Größe: Die Datenmenge zum Anfordern von Leseanforderungen für optimale Datenübertragungsgeschwindigkeiten.
  • Grundlegende Blockgröße: Die Größe jedes Blocks im Dateisystem.

Blöcke:

  • Gesamt: Die Gesamtzahl aller Blöcke im Dateisystem.
  • Kostenlos: Die Anzahl der freien Blöcke im Dateisystem.
  • Erhältlich: Die Anzahl der kostenlosen Blöcke, die regulären Benutzern zur Verfügung stehen (keine Wurzel).

Inoden:

  • Gesamt: Die Gesamtzahl der Inodes im Dateisystem.
  • Kostenlos: Die Anzahl der freien Inodes im Dateisystem.

Symbolische Links dereferenzieren

Wenn du benutzt stat in einer Datei, die eigentlich ein symbolischer Link ist, werde über den link informieren. Ja du willst es stat um über die Datei zu informieren, auf die der Link zeigt, Verwenden Sie die -L (Dereferenzierung) Möglichkeit. Die Datei code.c ist ein symbolischer Link zu ana.c . Lass es uns ohne ihn sehen -L Möglichkeit:

stat code.c

Der Dateiname zeigt code.c zielen auf ( -> ) ana.c. Die Dateigröße ist nur 11 Bytes. Es gibt keine Blöcke, die dem Speichern dieses Links gewidmet sind. Der Dateityp wird als symbolischer Link angezeigt.

Deutlich, Wir sehen hier nicht die eigentliche Datei. Machen wir das noch einmal und fügen Sie das hinzu -L Möglichkeit:

stat -L code.c

Dies zeigt nun die Dateidetails für die Datei an, auf die durch den symbolischen Link verwiesen wird. Beachten Sie jedoch, dass der Dateiname immer noch als code.c. So heißt der Link, nicht die Zieldatei. Dies geschieht, weil dies der Name ist, an den wir weitergeben stat auf der Kommandozeile.

Der kompakte Bericht

das -t (prägnant) Option verursacht stat um eine komprimierte Zusammenfassung zu geben:

stat -t ana.c

Es werden keine Hinweise gegeben. Um Sinn zu machen, bis Sie die Halbbildfolge auswendig gelernt haben, Sie müssen diese Ausgabe mit einem Querverweis versehen stat Produktion.

Benutzerdefinierte Ausgabeformate

Eine bessere Möglichkeit, einen anderen Datensatz von . zu erhalten stat ist die Verwendung eines benutzerdefinierten Formats. Es gibt eine lange Liste von Token, die als Formatsequenzen bezeichnet werden. Jedes davon repräsentiert ein Datenelement. Wählen Sie die aus, die Sie in die Ausgabe aufnehmen möchten, und erstellen Sie eine Formatzeichenfolge. Wenn wir anrufen stat und übergeben Sie ihm die Formatzeichenfolge, die Ausgabe enthält nur die Datenelemente, die wir anfordern.

Es gibt verschiedene Sätze von Formatfolgen für Dateien und Dateisysteme. Die Dateiliste ist:

  • %ein: Zugriffsrechte in Oktal.
  • %EIN: Zugriffsrechte in menschenlesbarer Form (rwx).
  • %B: Die Anzahl der zugewiesenen Blöcke.
  • %B: Die Größe in Bytes jedes Blocks.
  • %D: Die Gerätenummer in Dezimal.
  • %D: Die Gerätenummer in Hexadezimal.
  • %F: Raw-Modus in Hex.
  • %F Der Dateityp.
  • %Gramm: Die Gruppen-ID des Eigentümers.
  • %GRAMM: Der Gruppenname des Eigentümers.
  • % h: Die Anzahl der physischen Links.
  • %ich: Inode-Nummer.
  • %Metro: Einhängepunkt.
  • %Norden: Der Name der Datei.
  • %NORDEN: Der Dateiname in Anführungszeichen, mit dem Dateinamen ohne Referenz, wenn es sich um einen symbolischen Link handelt.
  • % Ö: Der Transfergrößenvorschlag von E / S optimal.
  • %S: Gesamte Größe, und Bytes.
  • % T: Der primäre Gerätetyp in Hexadezimal, für spezielle Dateien für Zeichengeräte / Blöcke.
  • % T: Der untergeordnete Gerätetyp in Hexadezimal, für spezielle Dateien für Zeichengeräte / Blöcke.
  • % du: Besitzer-Benutzer-ID.
  • % U: Der Benutzername des Eigentümers.
  • % w: Geburtszeit der Datei, menschenlesbar oder ein Bindestrich „-“, falls unbekannt.
  • % W: Geburtszeit der Datei, Sekunden von der Zeit; 0 falls unbekannt.
  • %x: Der Zeitpunkt des letzten Zugriffs, für Menschen lesbar.
  • %x: Der Zeitpunkt des letzten Zugriffs, Sekunden von der Zeit.
  • % und: Der Zeitpunkt der letzten Datenänderung, für Menschen lesbar.
  • % UND: Der Zeitpunkt der letzten Datenänderung, Sekunden von der Zeit.
  • % Mit: Der Zeitpunkt der letzten Zustandsänderung, für Menschen lesbar.
  • % MIT: Der Zeitpunkt der letzten Zustandsänderung, Sekunden von der Zeit.

Die “Epoche” ist der Unix-Ära, das geschah am 1 vom Januar von 1970 bei 00:00:00 + 0000 (koordinierte Weltzeit).

Für Dateisysteme, die Formatfolgen sind:

  • %ein: Die Anzahl der kostenlosen Blöcke, die regulären Benutzern zur Verfügung stehen (keine Wurzel).
  • %B: Die Gesamtzahl der Datenblöcke im Dateisystem.
  • %C: Die Gesamtzahl der Inodes im Dateisystem.
  • %D: Die Anzahl der freien Inodes im Dateisystem.
  • %F: Die Anzahl der freien Blöcke im Dateisystem.
  • %ich: Die Dateisystem-ID in Hexadezimal.
  • % l: Die maximale Länge von Dateinamen.
  • %Norden: Der Name der Datei.
  • %S: Block Größe (die optimale Schriftgröße).
  • %S: Die Größe der Dateisystemblöcke (für Blockzählungen).
  • % T: Der Dateisystemtyp in hexadezimal.
  • % T: Dateisystemtyp in menschenlesbarem Format.

Es gibt zwei Optionen, die Zeichenfolgen von Formatsequenzen akzeptieren. Diese sind --format und --printf. Der Unterschied zwischen ihnen ist --printf interpretieren Escape-Sequenzen im C-Stil als neue Zeile n und tab t und es fügt seiner Ausgabe nicht automatisch ein Newline-Zeichen hinzu.

Erstellen wir einen Formatstring und übergeben ihn an stat. Die zu verwendenden Formatfolgen sind %n für Dateinamen, %s für Dateigröße und %F für Dateityp. Wir werden die hinzufügen n Escape-Sequenz am Ende der Zeichenfolge, um sicherzustellen, dass jede Datei in einer neuen Zeile behandelt wird. Unser Formatstring sieht so aus:

"Datei %n ist %s Bytes, und ist ein %Fn"

Das geben wir weiter an stat Verwendung der --printf Möglichkeit. Lass uns fragen stat über eine Datei namens . berichten code.c und eine Reihe passender Dateien ana.?. Dies ist der vollständige Befehl. Beachten Sie das Gleichheitszeichen “=” Unter --printf und die Formatzeichenfolge:

stat --printf="Datei %n ist %s Bytes, und ist ein %Fn" code.c ana/ana.?

Der Bericht für jede Datei erscheint in einer neuen Zeile, was verlangen wir. Der Name der Datei, Dateigröße und Dateityp werden uns zur Verfügung gestellt.

Benutzerdefinierte Formate ermöglichen Ihnen den Zugriff auf noch mehr Datenelemente als im Standard enthalten stat Produktion.

Kontrolle der Körnung

Wie du siehst, Es gibt viel Spielraum, um die einzelnen Datenelemente zu extrahieren, die für Sie von Interesse sind. Sie können wahrscheinlich auch verstehen, warum wir die Verwendung von Aliasnamen für die längeren und komplexeren Verzauberungen empfehlen..

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.