GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Dateizeitstempel mit Beispielen erklärt

Dieses Tutorial erklärt die Arten von Linux-Dateizeitstempeln und wie Sie die Zeitstempel einer Datei mit touch anzeigen und ändern Befehl mit Beispielen.

Eine kurze Einführung in Linux-Dateizeitstempel

Unter Linux und Unix im Allgemeinen hat jede Datei drei Arten von Zeitstempeln, nämlich atime (Zugriffszeit), mtime (Änderungszeit) und ctime (Zeit ändern). Wie der Name schon sagt, werden die Zeitstempel verwendet, um herauszufinden, wann auf eine Datei zugegriffen, sie geändert und geändert wurde.

Der Zeitstempel der Zugriffszeit (oder kurz atime) ist das letzte Mal, dass eine Datei gelesen wurde. Beispielsweise haben Sie möglicherweise die Datei geöffnet. Auf die Datei wurde möglicherweise von einem anderen Programm oder einem Remote-Computer zugegriffen. Möglicherweise haben Sie den Inhalt einer Datei mit einem Befehl gelesen (z. B. cat Befehl) oder ein Programm (z.B. gedit, vim etc.). Die Datei wird weder bearbeitet noch modifiziert. Es wurde nur von Ihnen oder einem anderen Benutzer von einem entfernten System aus darauf zugegriffen.

Der Zeitstempel der Änderungszeit (oder mtime) gibt an, wann eine Datei (oder ein Verzeichnis) zuletzt geändert wurde. Mit anderen Worten, mtime gibt die Zeit an, zu der der Inhalt einer Datei geändert wurde. Beispielsweise haben Sie möglicherweise etwas in der Datei hinzugefügt oder etwas aus der Datei gelöscht oder den Inhalt der Datei geändert.

Ein Zeitstempel der Änderungszeit (oder ctime) zeigt das letzte Mal an, wann der Dateiinhalt oder die Dateimetadaten (d. h. Dateiattribute wie Dateieigentümerschaft, Dateiberechtigungen oder Gruppe) geändert wurden.

Zusammenfassend

  • atime - gibt die Zeit des letzten Zugriffs an Datei zum Lesen von Inhalten.
  • mtime - gibt die Zeit der letzten Änderung an Inhalt ablegen.
  • ctime - gibt die Zeit der letzten Änderung an zum Ablegen von Inhalten oder Ablegen von Metadaten (Besitzer, Gruppe oder Berechtigungen).

Die Zeitstempel können in verschiedenen Situationen hilfreich sein. Hier sind einige Anwendungsfälle für Zeitstempel:

  • Suchen und sortieren Sie Dateien basierend auf der Zugriffs- oder Änderungszeit.
  • Suchen und löschen Sie Dateien, die älter als X Tage sind. Nützlich, um alte Dateien auf Ihrer Festplatte zu bereinigen.
  • Überprüfen Sie, wann eine Konfigurationsdatei geändert wurde.
  • Überprüfen Sie, ob auf eine Datei zugegriffen wurde.
  • Überprüfen Sie, ob ein Verzeichnis aktualisiert wurde.
  • Dateien finden, die älter oder neuer als X Tage sind.

Linux-Dateizeitstempel mit stat anzeigen und ls Befehle

Wir können die Dateizeitstempel in Linux mit stat anzeigen Befehl. Laut Manpages ist die stat Der Befehl zeigt den Datei- oder Dateisystemstatus in Linux an. Der stat-Befehl ist Teil der GNU Coreutils , also machen wir uns nicht die Mühe, es zu installieren.

Lassen Sie uns nun die Zeitstempel einer Textdatei mit dem Namen ostechnix.txt überprüfen mit stat Befehl:

$ stat ostechnix.txt

Beispielausgabe:

  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Die letzten drei Zeilen in der obigen Ausgabe zeigen die Zeitstempel für Zugriffszeit, Änderungszeit bzw. Änderungszeit. Wenn wir einfach eine neue Datei erstellen, sind alle Zeitstempel gleich.

Haben Sie die Zeile "Birth:" bemerkt " am Ende der Ausgabe? Es gibt den Zeitstempel der Dateierstellung an. Der POSIX-Standard definiert keinen Zeitstempel für die Dateierstellung. Einige Dateisysteme (z. B. ext4, JFS, Btrfs) speichern diesen Wert, aber derzeit gibt es keine Linux-Kernel-API um darauf zuzugreifen. Wir sehen also einen Bindestrich "-" anstelle eines Zeitstempels in der Zeile "Geburt:".

Sie können die Zeitstempel atime, mtime und ctime auch einzeln mit ls abrufen Befehl.

Um den Zeitstempel der Änderungszeit (mtime) anzuzeigen, verwenden Sie ls -l Befehl:

$ ls -l ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Um den Zeitstempel der Änderungszeit (ctime) anzuzeigen, führen Sie ls -lc aus Befehl:

$ ls -lc ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Hier der c Flag wird verwendet, um die Zeit der letzten Änderung an Dateimetadaten oder Dateiattributen anzuzeigen.

Zeigen Sie den Zeitstempel der Zugriffszeit (atime) mit ls -lu an Befehl:

$ ls -lu ostechnix.txt 
-rw-rw-r-- 1 sk sk 21 Nov 11 17:31 ostechnix.txt

Hier das u Flag zeigt den Zeitpunkt des letzten Zugriffs auf die Datei an.

Linux-Dateizeitstempel mit touch ändern Befehl

Die touch Der Befehl wird verwendet, um die Dateizeitstempel zu ändern und neue, leere Dateien in Linux zu erstellen. Genau wie stat Befehl, die touch Der Befehl ist auch Teil von GNU coreutils , sodass Sie es auch nicht installieren müssen.

Bevor wir die Zeitstempel ändern, lassen Sie uns die aktuellen Zeitstempel der Datei mit dem Namen ostechnix.txt abrufen als Referenz:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:31:01.484504149 +0530
Modify: 2020-11-11 17:31:01.484504149 +0530
Change: 2020-11-11 17:31:01.484504149 +0530
 Birth: -

Wie Sie in der obigen Ausgabe sehen können, ist die Datei ostechnix.txt zugegriffen wurde. am selben Datum und zur selben Uhrzeit modifiziert und geändert, d. h. am 11. November 2020 um 17:31:01 Uhr.

Lassen Sie uns die Zeitstempel dieser Datei mit touch ändern Befehl wie unten:

$ touch ostechnix.txt

Der obige Befehl ändert alle Zeitstempel (d. h. atime, mtime und ctime) in die aktuelle Zeit Ihres Computers.

Schauen wir uns nun die Zeitstempel der Datei mit stat an Befehl:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:39:59.430610787 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:39:59.430610787 +0530
 Birth: -

Sehen? Alle Zeitstempel wurden auf die aktuelle Zeit meines Systems geändert, d. h. 2020-11-10 17:51:02 .

Es ist auch möglich, einzelne Zeitstempel separat zu ändern. Beispielsweise können Sie mit -a nur den Zeitstempel der Zugriffszeit (atime) ändern Flagge:

$ touch -a ostechnix.txt

Der obige Befehl setzt den Zeitstempel der Zugriffszeit auf die aktuelle Zeit.

Überprüfen Sie nun den Zeitstempel von ostechnix.txt Datei mit stat Befehl:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:39:59.430610787 +0530
Change: 2020-11-11 17:43:46.555428706 +0530
 Birth: -

Wie Sie in der obigen Ausgabe sehen, wird die Zugriffszeit auf die aktuelle Zeit geändert. Die Änderungszeit wird ebenfalls aktualisiert.

Um nur den Zeitstempel der Änderungszeit (mtime) zu ändern, verwenden Sie -m Flagge:

$ touch -m ostechnix.txt

Überprüfen Sie mit stat, ob sich die mtime geändert hat Befehl:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:43:46.555428706 +0530
Modify: 2020-11-11 17:47:17.577722187 +0530
Change: 2020-11-11 17:47:17.577722187 +0530
 Birth: -

Jetzt haben sich die Zeitstempel von mtime und ctime geändert, während atime unverändert geblieben ist.

Wie Sie vielleicht bemerkt haben, wird auch die ctime aktualisiert, wenn wir die Zugriffszeit oder Änderungszeit ändern.

Wenn Sie die Zeitstempel atime und mtime gleichzeitig ändern möchten, verwenden Sie -d Option.

$ touch -d "2020-11-11 17:50:01" ostechnix.txt

Überprüfen Sie mit stat, ob die Zeitstempel atime und mtime geändert wurden oder nicht Befehl:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:50:01.000000000 +0530
Modify: 2020-11-11 17:50:01.000000000 +0530
Change: 2020-11-11 17:51:17.024213698 +0530
 Birth: -

Wir haben jetzt die Zugriffszeit und die Änderungszeit auf eine bestimmte Zeit eingestellt, z. B. 2020-11-11 17:50:01 . Und der ctime-Zeitstempel wurde auch auf die aktuelle Zeit aktualisiert.

Es ist auch möglich, mit -t anstelle der aktuellen Zeit einen bestimmten Zeitstempel zu verwenden auch kennzeichnen:

$ touch -t 2011111754 ostechnix.txt

Dieser Befehl setzt die Zeitstempel atime und mtime auf 2020-11-11 17:54:00 . Überprüfen Sie es mit stat Befehl wie unten:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:56:20.844405239 +0530
 Birth: -

Wie bereits erwähnt, wird ctime aktualisiert, wenn atime und mtime geändert werden. Wenn Sie nur den ctime-Zeitstempel ändern möchten, gibt es kein spezielles Flag in touch Befehl. Sie müssen also die ctime manuell ändern, indem Sie die Dateimetadaten oder Dateiattribute ändern. Zum Beispiel werde ich ausführbare Berechtigungen zuweisen zu ostchnix.txt Datei mit chmod Befehl:

$ chmod +x ostechnix.txt

Prüfen Sie, ob ctime mit stat aktualisiert wird Befehl:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 17:54:00.000000000 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Sehen? Der ctime-Zeitstempel hat sich geändert, die atime- und mtime-Zeiten jedoch nicht. Denn auf die Datei wird weder zugegriffen noch sie verändert. Ich habe nur die Dateiberechtigung geändert.

Ändern Sie Dateizeitstempel, indem Sie Dateien anzeigen, darauf zugreifen oder Dateien ändern

Wie bereits erwähnt, wird der Zeitstempel atime geändert, wenn wir zum Lesen auf die Datei zugreifen. Versuchen Sie, mit cat zum Lesen auf die Datei zuzugreifen Befehl und sehen, was passiert.

$ cat ostechnix.txt
This is a text file.

Überprüfen Sie nun, ob der Zeitstempel der Zugriffszeit aktualisiert ist:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 21        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 17:54:00.000000000 +0530
Change: 2020-11-11 17:57:21.022720776 +0530
 Birth: -

Sehen? Der atime-Wert hat sich jetzt geändert.

Die mtime wird aktualisiert, wenn wir Daten zu einer Datei hinzufügen oder daraus entfernen.

Lassen Sie mich eine Zeile in der ostechnix.txt hinzufügen Datei:

$ echo "modify this file" >> ostechnix.txt

Überprüfen Sie die Dateizeitstempel:

$ stat ostechnix.txt 
  File: ostechnix.txt
  Size: 38        	Blocks: 8          IO Block: 4096   regular file
Device: 801h/2049d	Inode: 4351679     Links: 1
Access: (0775/-rwxrwxr-x)  Uid: ( 1000/      sk)   Gid: ( 1000/      sk)
Access: 2020-11-11 18:00:16.005323521 +0530
Modify: 2020-11-11 18:01:49.072771458 +0530
Change: 2020-11-11 18:01:49.072771458 +0530
 Birth: -

Da sich der Inhalt der Datei geändert hat, haben sich sowohl mtime als auch ctime geändert.

Zeitstempel für symbolische Links ändern

Standardmäßig, wenn Sie touch verwenden Befehl auf einem symbolischen Link (oder Symlink), es wird auch die Zeitstempel der referenzierten Datei ändern.

Wenn Sie nur den Zeitstempel eines Symlinks ändern möchten, verwenden Sie -h , (--no-dereference ) Option:

$ touch -h <path-to-symlink>

[Bonus-Tipp] Kopieren Sie Zeitstempel aus einer anderen Datei

Der Touch-Befehl hat eine Option namens -r, (--reference=) wodurch Sie Zeitstempel von einer Datei in eine andere kopieren können.

Der folgende Befehl kopiert die Zeitstempel von Datei1 nach Datei2.

$ touch -r file1.txt file2.txt

Weitere Einzelheiten finden Sie auf den Manpages von stat und touch Befehle:

$ man stat
$ man touch

Schlussfolgerung

In diesem Handbuch haben wir drei Arten von Linux-Dateizeitstempeln besprochen, d. h. atime, mtime und ctime, wie Sie die Dateizeitstempel mit stat anzeigen können und ls Befehle und schließlich, wie man diese Dateizeitstempel mit touch ändert Befehl. Hoffe das hilft.


Linux
  1. Linux cut Befehl erklärt mit 6 Beispielen

  2. Sortierbefehl in Linux mit Beispielen

  3. Linux Traceroute-Befehl, erklärt mit Beispielen

  4. Anhand von Beispielen wird die Verwendung des Vmstat-Befehls unter Linux erläutert

  5. Dateizeitstempel in Linux:atime, mtime, ctime Erklärt

Verwendung des Linux-mv-Befehls mit Beispielen

Linux tee-Befehl erklärt (mit Beispielen)

Linux csplit Befehl erklärt (mit Beispielen)

Linux-Mount-Befehl mit Beispielen

gawk Linux-Befehl mit Beispielen

Linux-make-Befehl mit Beispielen