Warum ändert Katze die Zugriffszeit nicht?

25

Der zweite Aufruf von cat a file aktualisiert die Zugriffszeit nicht. Ich hatte damit gerechnet, dass die Zugriffszeit jedes Mal aktualisiert wird, wenn ein Dateiinhalt angezeigt wird.

Ich sehe das gleiche Verhalten, wenn ich die Datei im Webbrowser öffne. Die Zugriffszeit wird nicht konsistent aktualisiert.

Verstehe ich die Zugriffszeit falsch? Was unterscheidet die beiden Katzenrufe?

$ touch test
$ stat test
  Datei: `test '
  Größe: 0 Blöcke: 0 IO Block: 4096 reguläre leere Datei
Gerät: 803h / 2051d Inode: 152694 Links: 1
Zugriff: (0664 / -rw-rw-r--) Uid: (1001 / Aaron) Gid: (1001 / Aaron)
Access: 2012-08-21 11: 05: 40.586020996 +0200
Ändern: 2012-08-21 11: 05: 40.586020996 +0200
Änderung: 2012-08-21 11: 05: 40.586020996 +0200
 Geburt: -

$ vim test
$ stat test
  Datei: `test '
  Größe: 5 Blöcke: 8 IO Block: 4096 reguläre Datei
Gerät: 803h / 2051d Inode: 152694 Links: 1
Zugriff: (0664 / -rw-rw-r--) Uid: (1001 / Aaron) Gid: (1001 / Aaron)
Access: 2012-08-21 11: 05: 52.890021630 +0200
Änderung: 2012-08-21 11: 06: 31.606023626 +0200
Änderung: 2012-08-21 11: 06: 31.638023629 +0200
 Geburt: -

$ Katzentest
Prüfung

$ stat test
  Datei: `test '
  Größe: 5 Blöcke: 8 IO Block: 4096 reguläre Datei
Gerät: 803h / 2051d Inode: 152694 Links: 1
Zugriff: (0664 / -rw-rw-r--) Uid: (1001 / Aaron) Gid: (1001 / Aaron)
Access: 2012-08-21 11: 06: 44.662024298 +0200
Änderung: 2012-08-21 11: 06: 31.606023626 +0200
Änderung: 2012-08-21 11: 06: 31.638023629 +0200
 Geburt: -

$ Katzentest
Prüfung

$ stat test
  Datei: `test '
  Größe: 5 Blöcke: 8 IO Block: 4096 reguläre Datei
Gerät: 803h / 2051d Inode: 152694 Links: 1
Zugriff: (0664 / -rw-rw-r--) Uid: (1001 / Aaron) Gid: (1001 / Aaron)
Access: 2012-08-21 11: 06: 44.662024298 +0200
Änderung: 2012-08-21 11: 06: 31.606023626 +0200
Änderung: 2012-08-21 11: 06: 31.638023629 +0200
 Geburt: -
Nelaaro
quelle

Antworten:

44

http://en.wikipedia.org/wiki/Stat_(system_call)

Zeitkritik

Das Schreiben in eine Datei ändert die Uhrzeit und die Uhrzeit, während das Lesen einer Datei die Uhrzeit ändert. Infolgedessen führt das Lesen einer Datei auf einem POSIX-kompatiblen System zu einem Schreibvorgang, der kritisiert wurde. Dieses Verhalten kann normalerweise durch Hinzufügen einer Mount-Option in / etc / fstab deaktiviert werden.

Das Deaktivieren der Zeitaktualisierung beeinträchtigt jedoch die POSIX-Kompatibilität und einige Anwendungen, insbesondere den Mutt-Mail-Reader (in einigen Konfigurationen) und einige Dienstprogramme zur Überwachung der Dateiverwendung, insbesondere tmpwatch. Im schlimmsten Fall kann die Nichtaktualisierung dazu führen, dass einige Sicherungsprogramme eine Datei nicht sichern können.

Linux-Kernel-Entwickler Ingo Molnár nannte atime "die vielleicht dümmste Unix-Design-Idee aller Zeiten" und fügte hinzu: auf die Festplatte! Und für jede Datei, die bereits zwischengespeichert ist und die wir aus dem Cache lesen ... schreibe auf die Festplatte! "

Atime-Updates sind mit Abstand der größte Leistungsmangel, den Linux heute hat. Wenn wir keine Zeitaktualisierungen mehr benötigen, erzielen wir im Linux-Alltag mehr Leistung als alle PageCache-Beschleunigungen der letzten 10 Jahre zusammen .

Woher wissen, ob noatime oder relatime die Standard-Mount-Option im Kernel ist?

man mount
....
   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear
          lier than the current modify or change time. (Similar  to  noat
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

          Since Linux 2.6.30, the kernel defaults to the behavior provided
          by this option (unless noatime was  specified), and the stricta‐
          time  option  is  required  to  obtain traditional semantics. In
          addition, since Linux 2.6.30, the file's  last  access  time  is
          always  updated  if  it  is more than 1 day old.
....

Wie diese bestimmte Partition eingehängt wurde und warum cat die Zugriffszeit nicht wie erwartet aktualisiert.

Nelaaro
quelle
Weitere Informationen darüber, wie Ubuntu mit atime umgeht askubuntu.com/questions/2099/…
nelaaro
Hier ist eine ältere Diskussion darüber, wie sich verschiedene Mount-Optionen auf atime auswirken. linux.koolsolutions.com/2009/01/30/…
nelaaro