Connect with us

Wie man

Erklärte Zeitstempel für Linux-Dateien: atime, mtime und ctime

Everything You Ever Wanted to Know About inodes on Linux

Fatmawati Achmad Zaenuri / Shutterstock

Wann bedeutet «geändert» nicht «geändert»? Wenn wir über Zeitstempel für Linux-Dateien sprechen. In diesem Handbuch erklären wir, wie das System sie aktualisiert und wie Sie sie selbst ändern können.

Der Unterschied zwischen atime, mtime und ctime

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

Der Zugriffszeitstempel ist das letzte Mal, dass eine Datei gelesen wurde. Dies bedeutet, dass jemand ein Programm verwendet hat, um den Inhalt der Datei anzuzeigen oder einige Werte daraus zu lesen. Der Datei wurde nichts bearbeitet oder hinzugefügt. Die Daten wurden referenziert, aber unverändert.

Ein geänderter Zeitstempel gibt an, wann der Inhalt einer Datei zuletzt geändert wurde. Ein Programm oder ein Prozess hat die Datei entweder bearbeitet oder bearbeitet. «Geändert» bedeutet, dass etwas in der Datei geändert oder gelöscht oder neue Daten hinzugefügt wurden.

Geänderte Zeitstempel beziehen sich nicht auf Änderungen am Inhalt einer Datei. Es ist vielmehr der Zeitpunkt, zu dem die auf die Datei bezogenen Metadaten geändert wurden. Änderungen an Dateiberechtigungen aktualisieren beispielsweise den geänderten Zeitstempel.

Das standardmäßige ext4 Linux-Dateisystem weist in seinen internen Dateisystemstrukturen auch Speicherplatz für einen Zeitstempel für die Dateierstellung zu, dies wurde jedoch noch nicht implementiert. Manchmal wird dieser Zeitstempel ausgefüllt, aber Sie können sich nicht auf die darin enthaltenen Werte verlassen.

Die Anatomie eines Zeitstempels

Linux-Zeitstempel enthalten eher eine Zahl als ein Datum und eine Uhrzeit. Diese Zahl ist die Anzahl der Sekunden seit dem Unix-Epoche, die am 1. Januar 1970 um Mitternacht (00:00:00) war Koordinierte Weltzeit (UTC). Schaltsekunden werden in Linux-Zeitstempeln ignoriert, daher sind sie nicht analog zu Echtzeit.

Wenn Linux einen Zeitstempel anzeigen muss, übersetzt es die Anzahl der Sekunden in ein Datum und eine Uhrzeit. Dies erleichtert dem Menschen das Verständnis. Der Ort und die Zeitzone, in der sich der Computer befindet, auf dem die Datei angezeigt wird, leiten die Konvertierung der Anzahl von Sekunden in Datum und Uhrzeit. Außerdem wird sichergestellt, dass der Monat in der richtigen Sprache angezeigt wird.

Wie viele Sekunden können in einem Zeitstempel gespeichert werden? Viel – 2.147.483.647, um genau zu sein. Das ist eine große Zahl, aber ist es genug? Wenn Sie das zur Unix-Epoche hinzufügen und es dann in ein Datum und eine Uhrzeit übersetzen, erhalten Sie Dienstag, 19. Januar 2038, um 03:14:07 Uhr. Bis dahin benötigen wir jedoch ein anderes Schema für Zeitstempel.

Zeitstempel anzeigen

Wenn Sie die verwenden -l Option (lange Auflistung) mit ls, Wie nachfolgend dargestellt, Sie können den geänderten Zeitstempel sehen::

ls -l dp.c

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

ls -lu dp.c

Um den Zeitstempel für die Änderung anzuzeigen, können Sie den verwenden -lc Option (Zeit ändern); Geben Sie Folgendes ein:

ls -lc dp.c

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

Zu Alle Zeitstempel gleichzeitig anzeigen, benutze die stat Befehl wie folgt:

stat dp.c

Die Zeitzonen werden am unteren Rand des Displays aufgelistet. Wie Sie sehen können, haben sie eine sehr genaue Komponente in Sekundenbruchteilen. Am Ende jedes Zeitstempels sehen Sie auch a -0500 oder -0400 .

Diese sind . Das Dateisystem zeichnet die Zeitstempel in UTC auf und konvertiert sie in die lokale Zeitzone, wenn sie von angezeigt werden stat. Der Computer, mit dem wir diesen Artikel recherchiert haben, ist so konfiguriert, als ob er sich in der Zone Eastern Standard Time (EST) der USA befindet

Diese Zeitzone liegt fünf Stunden hinter UTC, wenn EST in Kraft ist. Es ist jedoch vier Stunden hinter UTC, wenn die Eastern Daylight Time (EDT) in Kraft ist. Im April 2019, als der geänderte Zeitstempel geändert wurde, war EDT in Kraft. Aus diesem Grund haben zwei der Zeitstempel einen Versatz von fünf Stunden, der modifizierte einen Versatz von vier Stunden.

Die Offsets und Zeitzonen werden nirgendwo gespeichert. Es gibt weder einen Inode- noch einen Dateisystembereich, in dem diese Werte gespeichert werden. Sie müssen diese im laufenden Betrieb anhand des Zeitstempels (der immer in UTC-Zeit angegeben ist), der lokalen Zeitzone des Computers, auf dem die Datei angezeigt wird, und der Frage, ob die Sommerzeit wirksam war, berechnen.

Sie sehen auch einen Zeitstempel «Geburt», der für das Erstellungsdatum der Datei reserviert ist. Dies ist nicht implementiert und Sie sehen einen Bindestrich “-”Anstelle eines Zeitstempels.

Zeitstempel ändern

Wenn Sie möchten, können Sie die Zeitstempel einer Datei ändern. Du kannst den … benutzen touch Befehl zum Ändern des Zugriffs oder geänderter Zeitstempel, oder beides:

touch -a dp.c

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

stat dp.c

Der Zugriffszeitstempel hat sich wie erwartet geändert. Der geänderte Zeitstempel wurde jedoch ebenfalls aktualisiert. das ist normal.

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

touch -m dp.c
stat dp.c

Dieses Mal wurden die geänderten und geänderten Zeitstempel aktualisiert.

Du kannst den … benutzen -d Option (Datum), wenn Sie gleichzeitig den Zugriff und die geänderten Zeitstempel ändern möchten. Sie können auch eine Uhrzeit und ein Datum angeben. Sie können die Zeitstempel nicht auf die Gegenwart ändern.

Mit dem folgenden Befehl setzen wir den Zugriff und die geänderten Zeitstempel am 15. Januar 2020 auf 10:30:45 Uhr:

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

Wir haben jetzt den Zugriff und die geänderten Zeitstempel auf ein Datum in der Vergangenheit festgelegt. Der geänderte Zeitstempel wurde ebenfalls auf die aktuelle Uhrzeit des Computers aktualisiert.

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

touch dp.c -r dice_words.sl3
stat dp.c

Und dann sind wir so ziemlich wieder da, wo wir angefangen haben, mit einer Mischung aus -0400 und -0500 Zeitstempel.

Lassen Sie uns etwas tun, das nur den geänderten Zeitstempel betrifft. Wir werden das benutzen chmod Befehl, um eine ausführbare Datei zu geben Berechtigungen für alle Benutzer ausführen::

chmod +x dp
stat dp

Der geänderte Zeitstempel war der einzige, der aktualisiert wurde. Dies liegt daran, dass die Datei selbst nicht geändert wurde – sie wurde weder aufgerufen noch geändert. Die Metadaten zur Datei wurden jedoch geändert.

Wie das Dateisystem Zeitstempel aktualisiert

Wenn ein Dateisystem bereitgestellt wird, können Sie mithilfe von Optionen festlegen, wie dieses Dateisystem funktionieren oder behandelt werden soll. Diese sind in der gespeichert /etc/fstab Datei, die beim Booten gelesen und verarbeitet wird. Sie können auch Optionen festlegen, um das Schema festzulegen, das zum Aktualisieren des Zugriffszeitstempels verwendet werden soll.

Im Folgenden sind einige der häufigsten Optionen aufgeführt:

  • strenge Zeit (strenge Zeit): Diese Option aktualisiert den Zugriffszeitstempel von Dateien bei jedem Zugriff. Mit diesem Ansatz ist ein Overhead verbunden, aber einige Server können von diesem Schema profitieren. Auf einem Desktop- oder Laptop-Computer hat es wenig Wert.
  • Mittag (kein Zeitpunkt): Diese Option deaktiviert die Aktualisierung der Zugriffszeitstempel für Dateien und Verzeichnisse vollständig. Die geänderten Zeitstempel werden jedoch weiterhin aktualisiert.
  • nodiratime (kein dir atime): Diese Option aktiviert den Zugriff auf Zeitstempel für zu aktualisierende Dateien, deaktiviert sie jedoch für Verzeichnisse.
  • relatime (relative atime): Diese Option aktualisiert den Zugriffszeitstempel nur, wenn er älter als 24 Stunden war oder der vorherige älter als der aktuell geänderte oder geänderte Zeitstempel. Dies sorgt für ein ausgewogenes Verhältnis zwischen zu häufigen oder gar nicht aktualisierten Zugriffszeitstempeln.

Schauen wir uns das an /etc/fstab Datei für diesen Computer und sehen Sie, welche Optionen eingestellt sind:

less /etc/fstab

Das /etc/fstab Datei wird für uns angezeigt, wie unten gezeigt.

Hier ist der Inhalt der Datei ohne Umlauf:

# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/swapfile none swap sw 0 0

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

Die einzige Option, die an sie übergeben wird, ist errors=remount-roHiermit wird das Betriebssystem angewiesen, dieses Dateisystem als schreibgeschützt erneut bereitzustellen, wenn beim Versuch, es als Lese- und Schreibdateisystem bereitzustellen, Fehler auftreten.

Es wird also nicht erwähnt, wie der Zugriffszeitstempel behandelt wird. Lassen Sie uns tiefer graben und herausfinden, was /proc/mounts kann uns sagen. Wir werden die Ausgabe von weiterleiten /proc/mounts durch grep. Unsere Suchzeichenfolge lautet «sda»., die Festplattenkennung.

Wir geben Folgendes ein:

cat /proc/mounts | grep "sda"

Jetzt sehen wir die folgenden Optionen:

  • rw: Das Dateisystem wird als Lese- und Schreibdateisystem bereitgestellt.
  • relatime: Das Dateisystem verwendet das Schema «Relative Zeit», um die Zugriffszeitstempel zu aktualisieren.

Woher kommt das? Nun die relatime Schema wird in den folgenden Situationen verwendet:

  • Wenn der Standardeinstellungen /etc/fstab Option wird verwendet.
  • Wenn der relatime /etc/fstab Option wird verwendet.
  • Wenn in keine Zugriffszeitstempeloptionen verwendet werden /etc/fstabund Sie verwenden den Linux-Kernel 2.6.30 oder neuer.

Unsere /etc/fstab Eintrag für die ext4 Das Dateisystem hat keine Optionen für die Aktualisierung des Zugriffszeitstempels angegeben, daher hat Linux die vernünftige Wahl getroffen und verwendet relatime.

Zeitstempel sind wichtig

Mit Zeitstempeln können wir auf einfache Weise feststellen, wann auf eine Datei zugegriffen, diese geändert oder geändert wurde. Noch wichtiger ist jedoch, dass sie eine Möglichkeit zum Sichern und Synchronisieren von Software bieten, um festzustellen, welche Dateien gesichert werden müssen.

Die Möglichkeit, Zeitstempel zu bearbeiten, ist immer dann nützlich, wenn Sie ein Programm zwangsweise davon überzeugen müssen, eine Datei oder einen Satz von Dateien einzuschließen oder zu ignorieren.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia