Pregunta ¿Por qué el gato no está cambiando el tiempo de acceso?


La segunda llamada a cat un archivo no actualiza el tiempo de acceso. Esperaba que el tiempo de acceso se actualizara cada vez que se mostrara el contenido de un archivo.

Veo el mismo comportamiento si abro el archivo en el navegador web. Su tiempo de acceso no se actualiza constantemente.

¿Estoy malentendiendo el tiempo de acceso? ¿Qué es diferente entre las dos llamadas de gato?

$ touch test
prueba $ stat
  Archivo: `prueba '
  Tamaño: 0 Bloques: 0 IO Block: 4096 archivo regular vacío
Dispositivo: 803h / 2051d Inode: 152694 Enlaces: 1
Acceso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acceso: 2012-08-21 11: 05: 40.586020996 +0200
Modificar: 2012-08-21 11: 05: 40.586020996 +0200
Cambio: 2012-08-21 11: 05: 40.586020996 +0200
 Nacimiento: -

prueba $ vim
prueba $ stat
  Archivo: `prueba '
  Tamaño: 5 Bloques: 8 IO Block: 4096 archivo regular
Dispositivo: 803h / 2051d Inode: 152694 Enlaces: 1
Acceso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acceso: 2012-08-21 11: 05: 52.890021630 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Cambio: 2012-08-21 11: 06: 31.638023629 +0200
 Nacimiento: -

$ prueba de gato
prueba

prueba $ stat
  Archivo: `prueba '
  Tamaño: 5 Bloques: 8 IO Block: 4096 archivo regular
Dispositivo: 803h / 2051d Inode: 152694 Enlaces: 1
Acceso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acceso: 2012-08-21 11: 06: 44.662024298 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Cambio: 2012-08-21 11: 06: 31.638023629 +0200
 Nacimiento: -

$ prueba de gato
prueba

prueba $ stat
  Archivo: `prueba '
  Tamaño: 5 Bloques: 8 IO Block: 4096 archivo regular
Dispositivo: 803h / 2051d Inode: 152694 Enlaces: 1
Acceso: (0664 / -rw-rw-r--) Uid: (1001 / aaron) Gid: (1001 / aaron)
Acceso: 2012-08-21 11: 06: 44.662024298 +0200
Modificar: 2012-08-21 11: 06: 31.606023626 +0200
Cambio: 2012-08-21 11: 06: 31.638023629 +0200
 Nacimiento: -

22


origen




Respuestas:


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

Crítica de atime

Escribir en un archivo cambia su mtime y ctime, mientras que la lectura de un archivo cambia su atime. Como resultado, en un sistema compatible con POSIX, leer un archivo provoca una escritura, que ha sido criticada. Este comportamiento generalmente se puede desactivar agregando una opción de montaje en / etc / fstab.

Sin embargo, la desactivación de la actualización atime rompe el cumplimiento de POSIX, y algunas aplicaciones, especialmente el lector de correo mutt (en algunas configuraciones), y algunas utilidades para ver el uso de archivos, especialmente tmpwatch. En el peor de los casos, no actualizar atime puede hacer que algunos programas de copia de seguridad fallen al hacer una copia de seguridad de un archivo.

El desarrollador de kernel de Linux, Ingo Molnár, llamó a atime "quizás la idea de diseño de Unix más estúpida de todos los tiempos" y agregó: "[T] hink about this bit: 'Por cada archivo que se lee desde el disco, vamos a hacer ... escribir ¡para el disco! Y, para cada archivo que ya está almacenado en caché y que leemos del caché ... ¡escriba en el disco! '"Además, hizo hincapié en el impacto en el rendimiento:

Las actualizaciones de Atime son, con mucho, la mayor deficiencia de rendimiento de IO que tiene Linux actualmente. Deshacerse de las actualizaciones de Atime nos daría un rendimiento de Linux más diario que todas las aceleraciones de caché de páginas de los últimos 10 años, conjunto.

¿Cómo saber si noatime o relatime es la opción de montaje predeterminada en kernel?

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

Que es cómo se montó esa partición en particular y por qué cat no actualiza el tiempo de acceso como esperaba.


39



Más información sobre cómo maneja ubuntu atime askubuntu.com/questions/2099/... - nelaaro
Aquí hay una discusión más antigua sobre cómo el tiempo se ve afectado por diferentes opciones de montaje. linux.koolsolutions.com/2009/01/30/... - nelaaro