Erläuterung der Linux-Dateizeitstempel für: atime, mtime und ctime

Wann bedeutet „verändern“ nicht „ergänzen“? Wenn wir über Zeitstempel von Linux-Dateien sprechen. In dieser Anleitung erklären wir, wie das System sie aktualisiert und wie Sie sie selbst ändern können.

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Der Unterschied zwischen atime, mtime und ctime

Jede Linux-Datei verfügt über drei Zeitstempel: den Zugriffszeitstempel (atime), den geänderten Zeitstempel (mtime) und den geänderten Zeitstempel (ctime).

Der Zugriffszeitstempel ist der Zeitpunkt, zu dem die Datei das letzte Mal gelesen wurde. Dies bedeutet, dass jemand ein Programm verwendet hat, um den Inhalt der Datei anzuzeigen oder einige Werte daraus zu lesen. An der Datei wurde nichts geändert oder hinzugefügt. Die Daten werden referenziert, sind jedoch unverändert.

Der geänderte Zeitstempel gibt an, wann der Inhalt der Datei das letzte Mal geändert wurde. Ein Programm oder Prozess bearbeitet oder manipuliert die Datei. „Geändert“ bedeutet, dass etwas in der Datei geändert oder gelöscht wurde oder neue Daten hinzugefügt wurden.

Geänderte Zeitstempel weisen nicht auf Änderungen am Dateiinhalt hin. Es handelt sich vielmehr um den Zeitpunkt, zu dem die mit der Datei verbundenen Metadaten geändert wurden. Beispielsweise wird bei Änderungen der Dateiberechtigungen der geänderte Zeitstempel aktualisiert.

Das Standard-Linux-ext4-Dateisystem weist in seinen internen Dateisystemstrukturen auch Platz für den Zeitstempel der Dateierstellung zu, dies ist jedoch noch nicht implementiert. Manchmal ist dieser Zeitstempel gefüllt, aber Sie können sich nicht auf die darin enthaltenen Werte verlassen.

Detaillierter Zeitstempel

Linux-Zeitstempel enthalten eine Zahl anstelle von Datum und Uhrzeit. Diese Zahl gibt die Anzahl der Sekunden an Unix-Ära, das war Mitternacht (00:00:00) am 1. Januar 1970, Koordinierte Weltzeit (UTC). Schaltsekunden werden in Linux-Zeitstempeln ignoriert, sie haben also nichts mit der Echtzeit zu tun.

Wenn Linux einen Zeitstempel anzeigen muss, übersetzt es die Anzahl der Sekunden in ein Datum und eine Uhrzeit. Dadurch ist es für den Menschen leichter verständlich. Der Ort und die Zeitzone, in der der Computer die Datei anzeigt, weisen den Computer an, die Anzahl der Sekunden in ein Datum und eine Uhrzeit umzuwandeln. Es stellt außerdem sicher, dass der Monat in der richtigen Sprache angegeben ist.

Wie viele Sekunden können also in einem Zeitstempel gespeichert werden? Eine Menge – 2,147,483,647 um genau zu sein. Das ist eine große Zahl, aber reicht sie aus? Wenn Sie das zur Unix-Ära hinzufügen und es dann in ein Datum und eine Uhrzeit übersetzen, erhalten Sie Dienstag, 19. Januar 2038, 03:14:07 Uhr. Bis dahin benötigen wir ein anderes System für Zeitstempel.

Zeitstempel anzeigen

Wenn die Option -l (Longlist) mit ls verwendet wird, wie unten gezeigt, Sie können den geänderten Zeitstempel sehen:

ls -l dp.c

Wenn Sie den Zugriffszeitstempel sehen möchten, verwenden Sie die Option -lu (Zugriffszeit) wie folgt:

ls -lu dp.c

Um schließlich den Zeitstempel der Änderung anzuzeigen, können Sie die Option -lc (Änderungszeit) verwenden. Schreib das Folgende:

ls -lc dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Die obigen Zeitstempel zeigen, dass der Dateiinhalt zuletzt am 21. April 2019 geändert wurde. Die Zugriffs- und Änderungszeitstempel sind identisch, da die Datei am 20. Januar 2020 von einem anderen Computer auf diesen Computer kopiert wurde und beide Zeitstempel zu diesem Zeitpunkt aktualisiert wurden.

Lesen Sie auch:  So erstellen Sie eine ".Desktop"-Datei für Ihre Anwendung unter Linux

um zu sehen Alle Zeitstempel auf einmal, verwenden Sie den stat-Befehl wie folgt:

stat dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Die Zeitzonen werden am unteren Bildschirmrand aufgelistet. Wie Sie sehen, verfügen sie über eine sehr präzise Sekundenkomponente. Am Ende jedes Zeitstempels sehen Sie auch -0500 oder -0400.

Dabei handelt es sich um Zeitzonenversätze. Das Dateisystem zeichnet UTC-Zeitstempel auf und rechnet sie bei der Anzeige in der Statistik in die lokale Zeitzone um. Der Computer, den wir zur Recherche dieses Artikels verwendet haben, war so konfiguriert, als ob er sich in der Eastern Standard Time (EST)-Zone der Vereinigten Staaten befände.

Diese Zeitzone liegt fünf Stunden hinter der koordinierten Weltzeit (UTC), wenn Eastern Time gilt. Allerdings liegt sie vier Stunden hinter der koordinierten Weltzeit (UTC), wenn die Eastern Daylight Time (EDT) gilt. Im April 2019, als der überarbeitete Zeitstempel geändert wurde, trat die US Eastern Standard Time in Kraft. Aus diesem Grund haben zwei der Zeitstempel einen Versatz von fünf Stunden, die bearbeitete Version jedoch einen Versatz von vier Stunden.

Offsets und Zeitzonen werden nirgendwo gespeichert. Für die Speicherung dieser Werte ist kein Inode und kein Speicherplatz im Dateisystem zugewiesen. Sie müssen dies schnell anhand des Zeitstempels (der immer UTC ist), der lokalen Zeitzone des Computers, der die Datei anzeigt, und der Angabe, ob Sommerzeit gilt, berechnen.

Außerdem sehen Sie den Zeitstempel „Geburt“, der für das Erstellungsdatum der Datei reserviert ist. Dies ist nicht implementiert und anstelle des Zeitstempels wird ein Bindestrich „-“ angezeigt.

Zeitstempel ändern

Wenn Sie möchten, können Sie die Zeitstempel in der Datei ändern. Mit dem Touch-Befehl können Sie den Zugriff oder geänderte Zeitstempel ändern, Oder beides:

touch -a dp.c

Um einen neuen Zugriffszeitstempel festzulegen, können Sie die Option -a (Zugriffszeit) verwenden. Dieser Befehl setzt den Zugriffszeitstempel auf die aktuelle Zeit des Computers:

stat dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Der Zugriffszeitstempel hat sich erwartungsgemäß geändert. Allerdings wurde auch der geänderte Zeitstempel aktualisiert; Es ist normal.

Um den geänderten Zeitstempel zu ändern, können Sie die Option -m (geänderte Zeit) verwenden:

touch -m dp.c
stat dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Diesmal wurden die geänderten und geänderten Zeitstempel aktualisiert.

Sie können die Option -d (Datum) verwenden, wenn Sie sowohl Zeitstempel als auch den geänderten Zugriff gleichzeitig ändern möchten. Sie können auch die Uhrzeit und das Datum angeben – Sie sind nicht darauf beschränkt, Zeitstempel in die Gegenwart zu ändern.

Wir werden den folgenden Befehl verwenden, um die Zugriffs- und geänderten Zeitstempel auf 10:30:45 Uhr am 15. Januar 2020 zu setzen:

touch -d "2020-01-15 10:30:45" dp.c
stat dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Wir haben nun die Zugriffs- und Änderungszeitstempel auf ein Datum in der Vergangenheit gesetzt. Der geänderte Zeitstempel wird auch auf die aktuelle Zeit des Computers aktualisiert.

Sie können auch die Option -r (Referenz) verwenden, wie unten gezeigt, wenn Sie die Zeitstempel einer Datei auf die Zeitstempelwerte einer anderen Datei setzen möchten:

Berühren Sie dp.c -r dice_words.sl3
stat dp.c

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Danach sind wir fast wieder da, wo wir angefangen haben, mit einer Mischung aus -0400- und -0500-Zeitstempeln.

Lesen Sie auch:  So erstellen Sie einen benutzerdefinierten Webbrowser mit Nyxt

Lassen Sie uns etwas tun, das sich nur auf den variablen Zeitstempel auswirkt. Wir werden den Befehl chmod verwenden, um die ausführbare Datei zu gewähren Ausführungsberechtigungen für alle Benutzer:

chmod +x dp
stat dp

Der geänderte Zeitstempel war der einzige, der aktualisiert wurde. Dies liegt daran, dass die Datei selbst weder geändert noch darauf zugegriffen oder geändert wurde. Die Metadaten der Datei wurden jedoch geändert.

Wie aktualisiert das Dateisystem Zeitstempel?

Wenn ein Dateisystem installiert ist, gibt es Optionen, mit denen Sie festlegen können, wie dieses Dateisystem ausgeführt wird oder wie mit ihm interagiert werden soll. Sie werden in der Datei /etc/fstab gespeichert, die beim Booten gelesen und verarbeitet wird. Sie können auch Optionen festlegen, um festzulegen, welches System zum Aktualisieren des Zugriffszeitstempels verwendet werden soll.

Hier sind einige der beliebtesten Optionen:

strictatime: Diese Option aktualisiert den Dateizugriffszeitstempel bei jedem Zugriff. Dieser Ansatz ist mit zusätzlichen Kosten verbunden, einige Server können jedoch von diesem Schema profitieren. Es hat gegenüber einem Desktop- oder Laptop-Computer nur wenige Vorteile.
noatime(no atime): Diese Option deaktiviert die Aktualisierung der Zugriffszeitstempel für Dateien und Verzeichnisse vollständig. Die geänderten Zeitstempel werden jedoch aktualisiert.
nodiratime (no dir atime): Diese Option ermöglicht den Zugriff auf Zeitstempel für zu aktualisierende Dateien, deaktiviert sie jedoch für Verzeichnisse.
relatime: Diese Option aktualisiert den Zugriffszeitstempel nur, wenn er mehr als 24 Stunden alt ist oder der vorherige älter ist als der aktuell geänderte oder geänderte Zeitstempel. Dadurch wird ein gutes Gleichgewicht zwischen der häufigen Aktualisierung der Zugriffszeitstempel und der überhaupt keinen Aktualisierung erreicht.
Schauen wir uns die Datei /etc/fstab für diesen Computer an und sehen, welche Optionen festgelegt sind:

weniger / etc / fstab

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Die Datei /etc/fstab erscheint wie unten gezeigt.

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Hier ist der Dateiinhalt ohne Umbruch:

# /etc/fstab: statische Dateisysteminformationen.
#
# Verwenden Sie „blkid“, um die universell eindeutige Kennung für a auszugeben
#Gerät; Dies kann mit UUID= als robustere Methode zur Benennung von Geräten verwendet werden
# das funktioniert auch, wenn Festplatten hinzugefügt und entfernt werden. Siehe fstab(5).
#
# <Datei System> <montieren Punkt> <tippe> <Optionen> <abladen> <passieren>
# / war während der Installation auf / dev / sda1
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4errors=remount-ro 0 1 /swapfile none swap sw 0 0

Es gibt nur zwei Einträge, einer davon ist eine Auslagerungsdatei, die wir ignorieren können. Der andere wird im Stammverzeichnis des Dateisystems (/) installiert und befand sich zum Zeitpunkt der Installation auf dem Gerät /dev/sda1. Dies ist die erste Partition auf der ersten Festplatte und sie enthält zufällig das ext4-Dateisystem.

Die einzige übergebene Option isterrors=remount-ro, die das Betriebssystem anweist, dieses Dateisystem erneut als schreibgeschütztes System bereitzustellen, wenn beim Versuch, es als schreibgeschütztes Dateisystem bereitzustellen, Fehler auftreten.

Daher wird nicht erwähnt, wie mit dem Zugriffszeitstempel umzugehen ist. Lassen Sie uns tiefer graben und prüfen, was /proc/mounts uns sagen kann. Wir werden die Ausgabe von /proc/mounts über grep verbinden. Unsere Suchzeichenfolge lautet „sda", Festplattenkennung.

Lesen Sie auch:  So entfernen Sie das Passwort aus einer PDF-Datei unter Linux

Wir schreiben Folgendes:

cat /proc/mounts | grep "sda"

Erläuterung der Linux-Dateizeitstempel für: atime, mtime, ctime – %categories

Nun sehen wir folgende Optionen:

rw: Das Dateisystem wird als Lese-/Schreibdateisystem gemountet.
relatime: Das Dateisystem verwendet das „relative Zeit“-System, um Zugriffszeitstempel zu aktualisieren.
Von wo ist das gekommen? Nun, ein Verbindungsdiagramm wird in den folgenden Situationen verwendet:

Bei Verwendung der Standardoption /etc/fstab.
Bei Verwendung der Datei /etc/fstab.
Wenn die Zugriffszeitstempeloptionen in /etc/fstab nicht verwendet werden und Sie den Linux-Kernel 2.6.30 oder höher verwenden.
Unser /etc/fstab-Eintrag für das ext4-Dateisystem enthielt keine Optionen zum Aktualisieren des Zugriffszeitstempels, daher traf Linux die vernünftige Wahl und verwendete Relatime.

Zeitstempel sind wichtig

Mithilfe von Zeitstempeln können wir auf einfache Weise feststellen, wann auf eine Datei zugegriffen, sie geändert oder geändert wurde. Aber was noch wichtiger ist: Es bietet eine Möglichkeit, die Software zu sichern und zu synchronisieren, um Dateien zu identifizieren, die gesichert werden müssen.

Die Möglichkeit, Zeitstempel zu manipulieren, ist praktisch, wenn Sie ein Programm mit Nachdruck davon überzeugen müssen, eine Datei oder Dateigruppe einzuschließen oder zu ignorieren.

Linux-Befehle
Mappen Teer·pv·Katze·tac·chmod·grep ·diff·Durst·ar·Mann·pushd·popd·fsck·Testplatte·ff·fd·Pandoc·cd·$ PATH·awk·join·jq·falten·uniq·journalctl·Schwanz·Zustand·ls·fstab·Echo·weniger·chgrp·chown·Umdrehung·aussehen·Streicher·tippe·umbenennen·Reißverschluss·entpacken·montieren·umount·installieren·fdisk·mkfs·rm·rmdir·rsync·df·gpg·vi·nano·mkdir·du·ln·Flicken·verkaufen·rclone·zerkleinern·SRM·scp·gzip·Geschwätz·Ausschneiden·gefunden·umask·wc· tr
Prozesse alias·Bildschirm·Top·schön·Renice·Fortschritt·strace·systemd·tmux·chsch·Geschichte·at·Portion·kostenlos·welche·dmesg·CHFn·usermod·ps·Chroot·xargs·tty·pinky·lsof·vmstat·Timeout·wall·ja·töten·schlafen·sudo·su·Zeit·Gruppe hinzufügen·usermod·Gruppen·lshw·Schließung·rebooten·Lahmheit·poweroff·passwd·lscpu·crontab·Datum·bg·fg·pidof·Nohup·pmap
Networking netstat·Klingeln·Traceroute·ip·ss·whois·fail2ban·bmon·graben·Finger·nmap·ftp·curl·wget·die·whoami·w·iptables·ssh-keygen·ufw·Arping·Feuerland
Sie können auch mögen