Pourquoi le chat ne change-t-il pas le temps d'accès?


24

Le deuxième appel à chat d'un fichier ne met pas à jour le temps d'accès. Je m'attendais à ce que le temps d'accès soit mis à jour chaque fois qu'un contenu de fichier est affiché.

Je constate le même comportement si j'ouvre le fichier dans un navigateur Web. Son temps d'accès n'est pas mis à jour régulièrement.

Est-ce que je comprends mal le temps d'accès? Quelle est la différence entre les deux appels de chat?

$ test tactile
$ test statistique
  Fichier: `test '
  Taille: 0 Blocs: 0 IO Block: 4096 Fichier normalement vide
Appareil: 803h / 2051d Inode: 152694 Liens: 1
Accès: (0664 / -rw-rw-r--) UID: (1001 / aaron) Gid: (1001 / aaron)
Accès: 2012-08-21 11: 05: 40.586020996 +0200
Modifier: 2012-08-21 11: 05: 40.586020996 +0200
Changement: 2012-08-21 11: 05: 40.586020996 +0200
 Naissance: -

$ vim test
$ test statistique
  Fichier: `test '
  Taille: 5 Blocs: 8 IO Block: 4096 fichier normal
Appareil: 803h / 2051d Inode: 152694 Liens: 1
Accès: (0664 / -rw-rw-r--) UID: (1001 / aaron) Gid: (1001 / aaron)
Accès: 2012-08-21 11: 05: 52.890021630 +0200
Modifier: 2012-08-21 11: 06: 31.606023626 +0200
Changement: 2012-08-21 11: 06: 31.638023629 +0200
 Naissance: -

$ test de chat
tester

$ test statistique
  Fichier: `test '
  Taille: 5 Blocs: 8 IO Block: 4096 fichier normal
Appareil: 803h / 2051d Inode: 152694 Liens: 1
Accès: (0664 / -rw-rw-r--) UID: (1001 / aaron) Gid: (1001 / aaron)
Accès: 2012-08-21 11: 06: 44.662024298 +0200
Modifier: 2012-08-21 11: 06: 31.606023626 +0200
Changement: 2012-08-21 11: 06: 31.638023629 +0200
 Naissance: -

$ test de chat
tester

$ test statistique
  Fichier: `test '
  Taille: 5 Blocs: 8 IO Block: 4096 fichier normal
Appareil: 803h / 2051d Inode: 152694 Liens: 1
Accès: (0664 / -rw-rw-r--) UID: (1001 / aaron) Gid: (1001 / aaron)
Accès: 2012-08-21 11: 06: 44.662024298 +0200
Modifier: 2012-08-21 11: 06: 31.606023626 +0200
Changement: 2012-08-21 11: 06: 31.638023629 +0200
 Naissance: -

Réponses:


44

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

Critique de l'atime

L'écriture dans un fichier modifie ses paramètres mtime et ctime, tandis que la lecture d'un fichier modifie son heure. Par conséquent, sur un système compatible POSIX, la lecture d'un fichier provoque une écriture, ce qui a été critiqué. Ce comportement peut généralement être désactivé en ajoutant une option de montage dans / etc / fstab.

Cependant, le fait de désactiver la mise à jour atime enfreint la conformité POSIX et certaines applications, notamment le lecteur de messagerie mutt (dans certaines configurations), ainsi que certains utilitaires de surveillance de l'utilisation des fichiers, notamment tmpwatch. Dans le pire des cas, le fait de ne pas mettre à jour atime peut empêcher certains programmes de sauvegarde de sauvegarder un fichier.

Le développeur du noyau Linux Ingo Molnár a appelé atime "peut-être l'idée de conception Unix la plus stupide de tous les temps", ajoutant: "Pensez-y un peu: 'Pour chaque fichier lu à partir du disque, faisons un ... write Et pour chaque fichier qui est déjà mis en cache et que nous lisons dans le cache ... écrivez sur le disque! "Il a ensuite souligné l’impact sur les performances:

Les mises à jour Atime sont de loin le plus gros déficit de performances IO de Linux. Se débarrasser des mises à jour atime nous donnerait plus de performances Linux quotidiennes que toutes les accélérations pagecache des 10 dernières années, combinées .

Comment savoir si noatime ou relatime est l'option de montage par défaut dans le noyau?

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.
....

C’est ainsi que cette partition a été montée et pourquoi cat ne met pas à jour le temps d’accès comme prévu.


Plus d'informations sur la manière dont ubuntu gère atime askubuntu.com/questions/2099/…
nelaaro

Voici une discussion plus ancienne sur la manière dont atime est affecté par différentes options de montage. linux.koolsolutions.com/2009/01/30/…
nelaaro
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.