Linux-Datei-Zeitstempel Erklärt: atime, mtime, ctime

0
2740
Fatmawati Achmad Zaenuri/Shutterstock

Wann gibt es “geändert” bedeutet nicht “modifiziert”? Wenn wir reden über Linux-Datei-Zeitstempel. In diesem Leitfaden werden wir erklären, wie das system aktualisiert, und wie verändern Sie sich selbst.

Der Unterschied Zwischen atime, mtime, ctime

Jeder Linux-Datei mit drei Zeitstempeln: der access-timestamp (Zeit), die modified-Zeitstempel (mtime), und die geänderten timestamp (ctime).

Der access-timestamp der letzten Zeit eine Datei gelesen wurde. Dies bedeutet, dass jemand der ein Programm benutzt, um die Inhalte anzuzeigen, die der Datei oder Lesen Sie einige Werte von ihm. Nichts wurde bearbeitet oder in die Datei eingefügt. Die Daten, auf die verwiesen wurde, aber unverändert.

Eine geänderte Zeitstempel bedeutet die Letzte Zeit der Inhalt einer Datei geändert wurden. Ein Programm oder Prozess entweder bearbeitet oder manipuliert die Datei. “Modifiziert” bedeutet, dass etwas in der Datei wurde geändert oder gelöscht oder neue Daten Hinzugefügt wurde.

Geändert von Zeitstempeln, nicht bezogen auf die änderungen an den Inhalt einer Datei. Vielmehr ist es der Zeitpunkt, an dem die Metadaten für die Datei geändert wurde. Datei-Berechtigung ändert, zum Beispiel, aktualisiert die geänderten timestamp.

Die standard-ext4-Linux-Datei-system auch reserviert Speicherplatz für eine Datei-Erstellung Zeitstempel im internen Dateisystem-Strukturen, aber dies wurde noch nicht umgesetzt noch nicht. Manchmal, dieser Zeitstempel wird aktualisiert, aber Sie können nicht hängt von den Werten in der it.

Die Anatomie eines Timestamp

Linux-Zeitstempel halten eine Reihe eher als ein Datum und eine Uhrzeit. Diese Zahl ist die Anzahl der Sekunden seit der Unix-Epoche, das war um Mitternacht (00:00:00) – am 1. Januar 1970 in UTC (Universal Time Coordinated). Schaltsekunden ignoriert werden, sind im Linux-Zeitstempel, so dass Sie nicht Analog zu Echtzeit.

Bei Linux braucht zum anzeigen eines Zeitstempels, übersetzt Sie die Anzahl der Sekunden in ein Datum und eine Uhrzeit. Dies macht es einfacher für Menschen zu verstehen. Der Standort und die Zeitzone des Computers anzeigen der Datei ist, führt die Umwandlung der Zahl in Sekunden, die ein Datum und eine Uhrzeit. Es sorgt auch für die Monate in der richtigen Sprache.

So, wie viele Sekunden kann gespeichert werden, in einen timestamp? Viel—und 2.147.483.647, um genau zu sein. Das ist eine große Zahl, aber ist es genug? Wenn Sie hinzufügen, dass der Unix-Epoche, und dann übersetzen Sie Sie zu einem Datum und Zeit, erhalten Sie am Dienstag, Januar 19, 2038, 03:14:07 Uhr müssen Wir ein anderes Schema für Zeitstempel, bevor dann, allerdings.

Anzeigen Von Zeitstempeln

Wenn Sie die-l (long listing) option mit ls, wie unten dargestellt, können Sie sehen die geänderte Zeitstempel:

ls -l dp.c

Wenn Sie sehen möchten der access-timestamp, verwenden Sie die -lu (access-time) option etwa so:

ls -lu dp.c

Und schließlich, um die Veränderung zu sehen Zeitstempel, können Sie die Option-lc (Zeit ändern) – option, geben Sie den folgenden:

ls -lc-dp.c

Die Zeitstempel oben zeigen den Inhalt der Datei wurden zuletzt geändert am April 21, 2019. Die Zugriffs-und geändert-Zeitstempel identisch sind, denn die Datei war kopiert von einem anderen computer, um diesen über den 20. Januar 2020, und beide timestamps wurden aktualisiert, zu diesem Zeitpunkt.

Um zu sehen, alle Zeitstempel gleichzeitig, verwenden Sie das stat-Befehl wie folgt:

stat dp.c

Die Zeitzonen sind am unteren Rand der Anzeige. Wie Sie sehen können, haben Sie eine sehr genaue, Komponente für Sekundenbruchteile. Am Ende jeder Zeitstempel, die Sie sehen auch eine -0500 oder -0400 .

Diese Zeitzonen-offsets. Die Datei system zeichnet den Zeitstempel im UTC-Format und wandelt Sie in die lokale Zeitzone bei der Anzeige von stat. Der computer, den wir bei der Erforschung dieser Artikel ist so konfiguriert, als wenn es in der Eastern Standard Time (EST) Zeitzone in den USA

Die Zeitzone fünf Stunden hinter der UTC bei der EST ist in Kraft. Jedoch, es ist vier Stunden hinter UTC bei Eastern Daylight Time (EDT) ist in Kraft. Im April 2019, wenn der geänderte Zeitstempel geändert wurde, EDT gültig war. Das ist, warum zwei der Zeitstempel haben ein fünf-Stunden Abstand, aber die modifizierte hat eine vier-Stunden-offset.

Die offsets und die Zeit-Zonen sind nicht überall gespeichert. Es gibt weder ein inode noch ein Datei-system Raum für die Durchführung dieser Werte. Sie berechnen diese on-the-fly mit dem timestamp (das ist immer in UTC-Zeit), der lokalen Zeitzone des Computers, die Anzeige der Datei, und ob der DST in Kraft ist.

Sie sehen auch eine “Geburt” – Zeitstempel, das ist reserviert für das ERSTELLUNGSDATUM der Datei. Dies ist nicht implementiert, und du siehst einen Bindestrich “-” statt einem timestamp.

RELATED: Alles, was Sie schon Immer Wissen Wollten, Über inodes auf Linux

Zeitstempel Ändern

Wenn Sie möchten, können Sie ändern Sie den Zeitstempel einer Datei. Sie können mit dem touch-Befehl zum ändern der access-oder modified-Zeitstempel, oder beide:

touch -dp.c

Setzen Sie eine neue access-timestamp ist, verwenden Sie die -a (access time) option. Mit diesem Befehl wird der Zugriff auf Zeitstempel, um die Uhrzeit des Rechners:

stat dp.c

Der access-timestamp geändert, wie erwartet. Aber der timestamp geändert wurde ebenso aktualisiert, das ist normal.

Ändern Sie die geänderten Zeitstempel, können Sie die Option-m (modified time) option:

touch -m-dp.c
stat dp.c

Diese Zeit, die modifiziert und geändert-Zeitstempel aktualisiert wurden.

Sie können die -d (Datum) auswählen, wenn Sie möchten, ändern Sie sowohl den Zugang und die geänderten Zeitstempel gleichzeitig. Sie können auch angeben, ein Datum und eine Uhrzeit—du bist nicht beschränkt sich auf das ändern der timestamps in die Gegenwart.

Wir verwenden den folgenden Befehl, um die Zugriffs-und geändert-Zeitstempel, um 10:30:45, 15. Januar 2020:

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

Wir haben jetzt den Zugang und modified-Zeitstempel für ein Datum in der Vergangenheit. Der timestamp geändert wurde auch aktualisiert, um die aktuelle Zeit des Computers.

Sie können auch verwenden Sie den-r (Referenz) option, wie unten gezeigt, wenn Sie möchten, legen Sie den Zeitstempel einer Datei an den Zeitstempel-Werte von einem anderen:

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

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

Lasst uns etwas tun, das betrifft nur die geänderten timestamp. Wir werden den Befehl chmod, um eine ausführbare Datei ausführen, Berechtigungen für alle Benutzer:

chmod +x dp
stat dp

Die geänderten timestamp war die einzige, die aktualisiert werden. Dies ist da die Datei selbst nicht verändert wurde—es war weder zugegriffen noch verändert werden. Jedoch, die Metadaten über die Datei geändert wurde.

RELATED: Wie Verwenden Sie das chmod-Kommando unter Linux

Wie die Datei-System-Updates Zeitstempel

Wenn ein Dateisystem gemounted ist, gibt es Optionen, die Sie verwenden können, um anzugeben, wie die Datei-system betrieben werden soll oder behandelt werden. Diese werden gespeichert in der Datei /etc/fstab-Datei, die gelesen und verarbeitet beim Booten. Sie können auch Optionen festlegen, zu diktieren, die Regelung, die Sie verwenden sollten, um eine Aktualisierung der access-timestamp.

Im folgenden sind einige der häufigsten Optionen:

  • strictatime (strenge atime): Diese option aktualisiert die access-Zeitstempels von Dateien jedes mal wenn auf diese zugegriffen wird. Es ist ein overhead verbunden mit diesem Ansatz, aber einige Server profitieren von dieser Regelung. Es hat wenig Verdienst auf einem desktop-oder laptop-computer.
  • noatime (keine atime): mit Dieser option vollständig deaktiviert den Zugriff Zeitstempel für Dateien und Verzeichnisse aktualisieren. Der geänderte Zeitstempel, werden jedoch weiterhin aktualisiert.
  • nodiratime (kein dir-atime): Diese option ermöglicht den Zugriff von Zeitstempeln für die Dateien zu aktualisieren, aber es deaktiviert Sie für Verzeichnisse.
  • relatime (relative Zeit): Diese option aktualisiert die access-timestamp nur, wenn es mehr als 24 Stunden alt sind, oder die Vorherige war älter als die aktuelle geändert wird Zeitstempel. Das scheint eine gute balance zwischen access-Zeitstempel Aktualisierung zu Häufig oder nicht die Aktualisierung an alle.

Schauen wir uns die Datei /etc/fstab für diesen computer und sehen, welche Optionen gesetzt sind:

less /etc/fstab

Die /etc/fstab-Datei angezeigt wird, die für uns, wie unten gezeigt.

Hier ist der Inhalt der Datei ohne die wrap-around:

# /etc/fstab: statische Dateisystem-Informationen.
#
# Verwenden Sie ‘blkid’ zu drucken, die universell eindeutige Kennung für eine
# Gerät; dies kann verwendet werden, mit der UUID= mehr als eine solide Möglichkeit, um Geräte zu benennen
# das funktioniert auch, wenn Datenträger Hinzugefügt und entfernt werden. Siehe fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 während der installation
UUID=4a143d08-8695-475b-8243-b13b56050fc2 / ext4 errors=remount-ro 0 1
/SwapDatei none swap sw 0 0

Es gibt nur zwei Einträge, und einer von Ihnen ist ein swap-file, was wir ignorieren können. Die anderen befestigt ist, an der Wurzel des Dateisystems ( / ) und wurde auf Gerät /dev/sda1 während der installation. Das ist die erste partition auf der ersten Festplatte, und es geschieht, enthalten ein ext4-Dateisystem.

Die einzige option, die übergeben wird, errors=remount-ro, was sagt das Betriebssystem remount das Dateisystem als read-only, wenn es gibt Fehler, wenn Sie versuchen, es zu montieren, als einen read-und write-Dateisystem.

So, es gibt keine Erwähnung von wie der access-timestamp behandelt werden. Lassen Sie uns tiefer Graben und sehen Sie, was /proc/mounts können es uns sagen. Werden wir leiten Sie die Ausgabe von /proc/mounts durch grep. Unsere such-string “sda”, die Festplatte Bezeichner.

Wir geben Sie den folgenden:

cat /proc/mounts | grep “sda”

Nun sehen wir folgende Möglichkeiten:

  • rw: Das Dateisystem wird gemountet als read-und write-Dateisystem.
  • relatime: Das Datei system der “relative-Zeit” – Regelung zum aktualisieren der access-timestamps.

Woher kommt das? Gut, die relatime-Schema ist in folgenden Situationen verwendet:

  • Wenn die Standardeinstellungen in /etc/fstab-option verwendet wird.
  • Wenn die relatime /etc/fstab-option verwendet wird.
  • Wenn kein Zugriff timestamp-Optionen in /etc/fstab, und Sie sind mit Linux kernel 2.6.30 oder neuer.

Unsere /etc/fstab-Eintrag für das ext4-Dateisystem nicht angeben, jeder Zugriff timestamp update-Optionen, so dass Linux gemacht, die vernünftige Wahl und verwendet relatime.

RELATED: Wie Schreibt man eine fstab-Datei auf Linux

Zeitstempel Sind Wichtig

Zeitstempel geben uns eine einfache Möglichkeit, um zu sehen, wenn eine Datei zugegriffen wurde, modifiziert oder geändert werden. Aber, noch wichtiger ist, Sie bieten eine Möglichkeit zur Sicherung und Synchronisierung software, um festzustellen, welche Dateien gesichert werden müssen.

Die Fähigkeit zum verändern der Zeitstempel wird sich als nützlich erweisen, Wann immer Sie brauchen, mit Gewalt überzeugen, ein Programm einschließen oder ignorieren einer Datei oder Gruppe von Dateien.

LESEN SIE WEITER

  • › Die Tracking-Prävention-Einstellung Sollten Sie Verwenden, in Microsoft Rand?
  • › Scam-Alarm: Nein, Netflix Ist nicht die Sperrung Ihres Kontos
  • › So Löschen Sie Ihre Persönlichen Informationen Von Menschen-Finder Websites
  • › Wie zu Erstellen und Teilen Sie Sammlungen Lage in Apple Maps
  • › Wie die Falten Befehl unter Linux