In Linux hat jede Datei einige Zeitstempel, die wichtige Analysen darüber liefern, wann die Datei oder ihre Attribute modifiziert oder geändert wurden. Sehen wir uns diese Zeitstempel im Detail an.
Was sind Linux-Zeitstempel?
Jede Datei in Linux hat normalerweise diese drei Zeitstempel:
- atime – Zugriffszeit
- mtime – Uhrzeit ändern
- ctime – Zeit ändern
eine Zeit
atime steht für Zugriffszeit. Dieser Zeitstempel sagt Ihnen, wann das letzte Mal auf die Datei zugegriffen wurde. Zugriff bedeutet, ob Sie cat, vim, less oder ein anderes Tool verwendet haben, um den Inhalt der Datei zu lesen oder anzuzeigen.
mtime
mtime steht für Modify Time. Dieser Zeitstempel gibt an, wann die Datei das letzte Mal geändert wurde. Modifizieren bedeutet, wenn der Inhalt einer Datei durch Bearbeiten der Datei geändert wurde.
ctime
ctime steht für status change time. Dieser Zeitstempel gibt an, wann die Eigenschaft und die Metadaten der Datei das letzte Mal geändert wurden. Die Metadaten umfassen Dateiberechtigungen, Eigentum, Name und Speicherort der Datei.
Wie kann man die Zeitstempel einer Datei sehen?
Sie können den Befehl stat verwenden, um alle Zeitstempel einer Datei anzuzeigen. Die Verwendung des Befehls stat ist sehr einfach. Sie müssen nur den Dateinamen angeben.
stat <filename>
Die Ausgabe sieht so aus:
stat abhi.txt
File: abhi.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:19:54.262153704 +0530
Modify: 2018-08-30 12:19:54.262153704 +0530
Change: 2018-08-30 12:19:54.262153704 +0530
Birth: -
Sie können alle drei Zeitstempel (Zugriff, Modifizieren und Ändern) in der obigen Ausgabe sehen. Alle drei Zeitstempel sind hier gleich, weil ich diese leere Datei gerade mit dem Touch-Befehl erstellt habe.
Lassen Sie uns nun diese Zeitstempel ändern.
Wenn ich zum Lesen der Datei den Befehl less verwende, ändert sich nur die Zugriffszeit, da Inhalt und Metadaten der Datei gleich bleiben.
$ less abhi.txt
$ stat abhi.txt
File: abhi.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:25:13.794471295 +0530
Modify: 2018-08-30 12:19:54.262153704 +0530
Change: 2018-08-30 12:19:54.262153704 +0530
Birth: -
Lassen Sie uns nun die Änderungszeit ändern. Ich werde den cat-Befehl verwenden, um dieser Datei neuen Text hinzuzufügen. Dadurch wird die Änderung der Zugriffszeit verhindert.
$ cat >> abhi.txt
demo text
^C
$ stat abhi.txt
File: abhi.txt
Size: 10 Blocks: 8 IO Block: 4096 regular file
Device: 10305h/66309d Inode: 11936465 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek)
Access: 2018-08-30 12:25:13.794471295 +0530
Modify: 2018-08-30 12:32:34.751320967 +0530
Change: 2018-08-30 12:32:34.751320967 +0530
Birth: -
Ist Ihnen etwas Seltsames aufgefallen? Sie haben die Datei geändert und erwartet, dass sich die mtime ändert, aber es hat auch die ctime geändert.
Denken Sie daran, dass ctime immer mit mtime geändert wird. Denn während mtime unter der Kontrolle des Benutzers steht, wird ctime vom System kontrolliert. Es stellt dar, wann die Datenblöcke oder Metadaten einer Datei das letzte Mal geändert wurden. Wenn Sie die Datei ändern, ändern sich die Datenblöcke und damit die ctime.
Sie können ctime allein ändern, indem Sie die Dateiberechtigungen mit den Befehlen chmod oder chgrp ändern, aber Sie können mtime nicht ändern, ohne ctime zu ändern.
Sie können ctime auch nicht auf normale Weise in der Vergangenheit ändern. Es ist eine Art Sicherheitsfunktion, da es Ihnen mitteilt, wann die Datei das letzte Mal geändert wurde. Selbst wenn jemand mtime ändert und für böswillige Zwecke in die Vergangenheit setzt, zeigt ctime die tatsächliche Zeit an, zu der mtime geändert wurde.
Denken Sie daran :ctime wird immer durch mtime change modifiziert.
Was sind die Verwendung von Dateizeitstempeln?
Es hilft sehr bei der Analyse. Es kann eine Reihe von Situationen geben, in denen Sie auf die Zeitstempel einer Datei verweisen müssen. Beispielsweise können Sie sehen, ob eine Datei kürzlich geändert wurde oder nicht, als sie geändert werden sollte.
Eine meiner Lieblingsanwendungen war das Auffinden von Protokolldateien einer Anwendung mit mtime. Führen Sie die Anwendung aus und gehen Sie einfach in das übergeordnete Verzeichnis der Anwendung und suchen Sie nach den Dateien, die in den letzten Minuten geändert wurden.
Ich habe Ihnen oben bereits gezeigt, dass es auch bei der Analyse helfen kann, ob jemand auf die Dateien zugegriffen oder sie böswillig geändert hat. Zeitstempel spielen in solchen Situationen eine wichtige Rolle.
Woher weiß ich, wann eine Datei ursprünglich erstellt wurde?
Haben Sie die letzte Zeile der Ausgabe des stat-Befehls bemerkt? Darauf steht „Geburt“. Sie können vermuten, dass dies die Zeitkarte darstellt, als die Datei „geboren“ wurde (oder genauer gesagt erstellt wurde).
Tatsächlich gibt es noch einen weiteren Zeitstempel namens Erstellungszeit (cr). Nicht alle Dateisysteme unterstützen diesen Zeitstempel. Ext4 ist eines der beliebtesten Linux-Dateisysteme und obwohl es den Erstellungszeitstempel unterstützt, kann der Befehl stat ihn derzeit nicht anzeigen. Vielleicht werden die zukünftigen Versionen des stat-Befehls den Erstellungszeitstempel im Geburtsabschnitt zeigen.