Einführung
Im Linux-Betriebssystem hat jede Datei zugehörige Zeitstempel (timestamps), die aufzeichnen, wann die Datei geändert, zugegriffen oder deren Attribute verändert wurden. Das Verständnis dieser Zeitstempel ist für Systemadministratoren, Entwickler und normale Benutzer von entscheidender Bedeutung, die Dateiaktivitäten überwachen müssen.
Dieses Tutorial führt Sie durch die praktischen Techniken zur Überprüfung von Dateizeitstempeln in Linux. Sie werden lernen, wie Sie die Änderungs- und Zugriffszeiten mithilfe verschiedener Befehle anzeigen können, was Ihnen hilft, Änderungen besser zu verfolgen und die Nutzungsmuster von Dateien in Ihrer Linux-Umgebung zu überwachen.
Das Verständnis von Dateizeitstempeln (File Timestamps) in Linux
In Linux hat jede Datei drei wichtige Zeitstempel (timestamps), die vom System automatisch verwaltet werden:
Arten von Dateizeitstempeln
- Änderungszeit (Modification Time, mtime): Zeigt an, wann der Inhalt der Datei zuletzt geändert wurde.
- Zugriffszeit (Access Time, atime): Zeigt an, wann die Datei zuletzt gelesen oder darauf zugegriffen wurde.
- Änderungszeit der Metadaten (Change Time, ctime): Zeigt an, wann die Metadaten der Datei (Berechtigungen, Eigentum) zuletzt geändert wurden.
Beginnen wir mit der Erkundung von Dateizeitstempeln, indem wir eine Testdatei erstellen und ihre Eigenschaften untersuchen.
Zunächst öffnen Sie das Terminal und navigieren Sie in Ihr Projektverzeichnis:
cd ~/project
Erstellen Sie eine einfache Textdatei mit dem Befehl touch:
touch testfile.txt
Der Befehl touch erstellt eine leere Datei, wenn sie noch nicht existiert, oder aktualisiert die Zeitstempel, wenn sie bereits vorhanden ist.
Lassen Sie uns die grundlegenden Dateiinformationen mit dem Befehl ls und der Option -l (langes Listenformat) überprüfen:
ls -l testfile.txt
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
-rw-r--r-- 1 labex labex 0 May 15 14:30 testfile.txt
In dieser Ausgabe:
- Die erste Spalte zeigt die Dateiberechtigungen an.
- Die dritte und vierte Spalte zeigen den Eigentümer und die Gruppe an.
- Die fünfte Spalte zeigt die Dateigröße (0 Bytes) an.
- Das Datum und die Uhrzeit ("15. Mai 14:30" in diesem Beispiel) zeigen die Änderungszeit an.
- Die letzte Spalte ist der Dateiname.
Diese grundlegende Auflistung zeigt die Änderungszeit, aber nicht die Zugriffszeit oder die Änderungszeit der Metadaten. Wir werden diese in den folgenden Schritten untersuchen.
Verwenden des stat-Befehls zum Anzeigen aller Zeitstempel
Während der ls-Befehl uns grundlegende Dateiinformationen liefert, bietet der stat-Befehl detailliertere Informationen über eine Datei, einschließlich aller drei Zeitstempel (timestamps).
Lassen Sie uns den stat-Befehl verwenden, um alle Zeitstempel unserer Testdatei anzuzeigen:
stat testfile.txt
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
File: testfile.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:30:00.000000000 +0000
Modify: 2023-05-15 14:30:00.000000000 +0000
Change: 2023-05-15 14:30:00.000000000 +0000
Birth: -
In dieser Ausgabe:
- Access: Zeigt an, wann die Datei zuletzt zugegriffen wurde (Zugriffszeit, atime).
- Modify: Zeigt an, wann der Dateiinhalt zuletzt geändert wurde (Änderungszeit, mtime).
- Change: Zeigt an, wann die Metadaten der Datei zuletzt geändert wurden (Änderungszeit der Metadaten, ctime).
- Birth: Zeigt die Erstellungszeit der Datei an (wird nicht auf allen Dateisystemen unterstützt).
Beachten Sie, dass alle drei Zeitstempel derzeit gleich sind, da wir die Datei gerade erst erstellt haben. Lassen Sie uns die Datei ändern, um zu sehen, wie sich diese Zeitstempel ändern.
Fügen Sie der Datei mithilfe des echo-Befehls etwas Inhalt hinzu:
echo "This is a test file" > testfile.txt
Lassen Sie uns nun die Zeitstempel erneut überprüfen:
stat testfile.txt
Sie sollten feststellen, dass die Änderungszeit (Modify) und die Änderungszeit der Metadaten (Change) aktualisiert wurden, während die Zugriffszeit (Access) je nach Systemkonfiguration gleich bleiben kann.
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:30:00.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:35:12.000000000 +0000
Birth: -
Überprüfen der Änderungszeit (Modification Time, mtime)
Die Änderungszeit (mtime) wird jedes Mal aktualisiert, wenn der Inhalt einer Datei geändert wird. Dies ist der Zeitstempel, der standardmäßig am häufigsten in Dateilisten angezeigt wird.
Verwenden von ls zum Überprüfen der Änderungszeit
Der Standardbefehl ls -l zeigt standardmäßig die Änderungszeit an:
ls -l testfile.txt
Ausgabe:
-rw-r--r-- 1 labex labex 19 May 15 14:35 testfile.txt
Für Dateien, die im aktuellen Jahr geändert wurden, zeigt ls -l den Monat, den Tag und die Uhrzeit an. Für Dateien, die in früheren Jahren geändert wurden, zeigt es stattdessen den Monat, den Tag und das Jahr anstelle der Uhrzeit an.
Anpassen des Zeitformats
Um detailliertere Zeitstempelinformationen anzuzeigen, verwenden Sie die Option --time-style mit ls:
ls -l --time-style=full-iso testfile.txt
Ausgabe:
-rw-r--r-- 1 labex labex 19 2023-05-15 14:35:12.000000000 +0000 testfile.txt
Dies zeigt den Zeitstempel im vollständigen ISO-Format an, einschließlich Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Zeitzone.
Sie können auch andere Formatoptionen wie long-iso oder iso verwenden:
ls -l --time-style=long-iso testfile.txt
Ausgabe:
-rw-r--r-- 1 labex labex 19 2023-05-15 14:35 testfile.txt
Verwenden von date zum Anzeigen der Änderungszeit
Eine andere Möglichkeit, die Änderungszeit zu überprüfen, ist der date-Befehl mit der Option -r:
date -r testfile.txt
Ausgabe:
Mon May 15 14:35:12 UTC 2023
Dieser Befehl zeigt die Änderungszeit in einem menschenlesbaren Format an.
Überprüfen der Zugriffszeit (Access Time, atime)
Die Zugriffszeit (atime) wird jedes Mal aktualisiert, wenn eine Datei gelesen oder darauf zugegriffen wird. Allerdings verwenden viele moderne Linux-Systeme Mount-Optionen wie relatime oder noatime, um die Häufigkeit der atime-Aktualisierungen zu reduzieren und so die Leistung zu verbessern.
Verwenden von ls zum Überprüfen der Zugriffszeit
Um die Zugriffszeit anstelle der Änderungszeit anzuzeigen, verwenden Sie die Option -u mit ls -l:
ls -lu testfile.txt
Ausgabe:
-rw-r--r-- 1 labex labex 19 May 15 14:40 testfile.txt
Der angezeigte Zeitstempel ist jetzt die Zugriffszeit anstelle der Änderungszeit.
Lassen Sie uns auf die Datei zugreifen, um ihre Zugriffszeit zu aktualisieren:
cat testfile.txt
Ausgabe:
This is a test file
Prüfen Sie nun erneut die Zugriffszeit:
ls -lu testfile.txt
Sie sollten feststellen, dass die Zugriffszeit auf die aktuelle Zeit aktualisiert wurde.
Vergleich aller Zeitstempel
Lassen Sie uns den stat-Befehl verwenden, um alle Zeitstempel nach dem Zugriff auf die Datei anzuzeigen:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:41:05.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:35:12.000000000 +0000
Birth: -
Beachten Sie, dass sich nur die Zugriffszeit geändert hat, während die Änderungszeit und die Änderungszeit der Metadaten (ctime) unverändert bleiben.
Ändern der Dateiberechtigungen, um die Änderungszeit der Metadaten zu aktualisieren
Lassen Sie uns die Änderungszeit der Metadaten (ctime) aktualisieren, indem wir die Dateiberechtigungen ändern:
chmod 640 testfile.txt
Prüfen Sie erneut alle Zeitstempel:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:41:05.000000000 +0000
Modify: 2023-05-15 14:35:12.000000000 +0000
Change: 2023-05-15 14:42:30.000000000 +0000
Birth: -
Sie können sehen, dass die Änderungszeit der Metadaten (ctime) auf die aktuelle Zeit aktualisiert wurde, während die Zugriffszeit und die Änderungszeit unverändert bleiben.
Manipulation von Dateizeitstempeln mit touch
Der Befehl touch ermöglicht es Ihnen nicht nur, Dateien zu erstellen, sondern auch deren Zeitstempel zu aktualisieren. Dies ist nützlich für Tests oder wenn Sie die Zeitstempel zwischen Dateien synchronisieren müssen.
Aktualisieren aller Zeitstempel
Um alle Zeitstempel (Zugriff, Änderung und Metadatenänderung) auf die aktuelle Zeit zu aktualisieren:
touch testfile.txt
Prüfen Sie die Zeitstempel:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:45:10.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:45:10.000000000 +0000
Birth: -
Aktualisieren nur der Zugriffszeit
Um nur die Zugriffszeit zu aktualisieren:
touch -a testfile.txt
Prüfen Sie die Zeitstempel:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:45:10.000000000 +0000
Change: 2023-05-15 14:46:15.000000000 +0000
Birth: -
Beachten Sie, dass auch die Änderungszeit der Metadaten (ctime) aktualisiert wird, da sich die Dateimetadaten geändert haben.
Aktualisieren nur der Änderungszeit
Um nur die Änderungszeit zu aktualisieren:
touch -m testfile.txt
Prüfen Sie die Zeitstempel:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-05-15 14:46:15.000000000 +0000
Modify: 2023-05-15 14:47:20.000000000 +0000
Change: 2023-05-15 14:47:20.000000000 +0000
Birth: -
Wiederum wird auch die Änderungszeit der Metadaten aktualisiert.
Festlegen spezifischer Zeitstempel
Sie können einen bestimmten Zeitstempel mit der Option -d in Verbindung mit touch festlegen:
touch -d "2023-01-01 12:00:00" testfile.txt
Prüfen Sie die Zeitstempel:
stat testfile.txt
Ausgabe:
File: testfile.txt
Size: 19 Blocks: 8 IO Block: 4096 regular file
Device: 801h/2049d Inode: 2101099 Links: 1
Access: (0640/-rw-r-----) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:48:30.000000000 +0000
Birth: -
Dies setzt sowohl die Zugriffs- als auch die Änderungszeit auf den 1. Januar 2023, 12:00 Uhr. Die Änderungszeit der Metadaten wird immer noch auf die aktuelle Zeit aktualisiert.
Erstellen einer neuen Datei mit Zeitstempeln aus einer vorhandenen Datei
Sie können auch die Option -r verwenden, um auf die Zeitstempel einer anderen Datei zu verweisen:
## Create a new file
touch newfile.txt
## Set its timestamps based on testfile.txt
touch -r testfile.txt newfile.txt
Prüfen Sie die Zeitstempel der neuen Datei:
stat newfile.txt
Ausgabe:
File: newfile.txt
Size: 0 Blocks: 0 IO Block: 4096 regular empty file
Device: 801h/2049d Inode: 2101100 Links: 1
Access: (0644/-rw-r--r--) Uid: (1000/labex) Gid: (1000/labex)
Access: 2023-01-01 12:00:00.000000000 +0000
Modify: 2023-01-01 12:00:00.000000000 +0000
Change: 2023-05-15 14:49:45.000000000 +0000
Birth: -
Die Zugriffs- und Änderungszeiten von newfile.txt stimmen jetzt mit denen von testfile.txt überein.
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie:
- Die drei Arten von Dateizeitstempeln in Linux verstehen: Änderungszeit (Modification Time, mtime), Zugriffszeit (Access Time, atime) und Änderungszeit der Metadaten (Change Time, ctime)
- Den
ls-Befehl mit verschiedenen Optionen verwenden, um Dateizeitstempel anzuzeigen - Den
stat-Befehl verwenden, um detaillierte Zeitstempelinformationen anzuzeigen - Dateiinhalte lesen, um die Zugriffszeit zu aktualisieren
- Dateiberechtigungen ändern, um die Änderungszeit der Metadaten zu aktualisieren
- Den
touch-Befehl verwenden, um Dateizeitstempel manuell zu manipulieren - Spezifische Zeitstempel auf Dateien anwenden
- Zeitstempel von einer Datei auf eine andere kopieren
Diese Fähigkeiten sind für eine effektive Dateiverwaltung und -überwachung in Linux unerlässlich. Dateizeitstempel helfen Ihnen, Änderungen zu verfolgen, Zugriffsmuster zu überwachen und sicherzustellen, dass Dateien ordnungsgemäß gewartet werden. Ob Sie ein Systemadministrator sind, der unbefugte Änderungen verfolgt, ein Entwickler, der dateiverwandte Probleme debuggt, oder ein normaler Benutzer, der seine Dateien organisiert - das Verständnis von Dateizeitstempeln ist eine wertvolle Fähigkeit in der Linux-Umgebung.



