GNU/Linux >> Tutoriales Linux >  >> Linux

El tiempo de acceso al archivo no se actualiza en ubuntu 12.04

En lugar de cat debes usar touch (o algo que fuerce una escritura), o declarando explícitamente atime en su opción de montaje.

Ubuntu usa relatime por defecto. El kernel de Linux, de hecho, usa relatime como predeterminado desde la versión 2.6.30 en adelante. Esto solo actualiza ciertos valores cuando se accede a los archivos en lugar de a todos. Esto modifica el cat comportamiento por lo que no actualizará el tiempo de acceso. Este es el valor predeterminado en las opciones de montaje de Ubuntu. La única forma de modificar el tiempo de acceso es tocar el archivo (también conocido como forzar una escritura) en lugar de una simple lectura.

La razón detrás de esto es el rendimiento. Si cada lectura requiere una escritura como lo requiere POSIX, la eficiencia de los discos y dispositivos basados ​​en flash será peor. Esto también parece contraproducente en los sistemas de archivos de solo lectura.

Hay mucha discusión sobre este tema en Ask Ubuntu y Super User:

  • https://askubuntu.com/q/2099/169736
  • https://superusuario.com/q/464290/235569

Hay 3 opciones de montaje que generalmente debe tener en cuenta cuando se trata de atime . Estás familiarizado con los primeros 2, de la página man de mount

extractos

atime  Do not use noatime feature, then the inode access time is controlled 
       by kernel defaults. See also the description for strictatime and  
       relatime mount options.

noatime
          Do not update inode access times on this filesystem (e.g., for 
          faster access on the news spool to speed up news servers).

La otra opción con la que probablemente no esté familiarizado, y la que le causa molestias, es esta, que ha sido la predeterminada desde el kernel 2.6.30:

relatime
          Update  inode  access times relative to modify or change time.
          Access time is only updated if the previous access time was 
          earlier than the current modify or change time. (Similar to 
          noatime, but doesn't break mutt or other applications that need to 
          know if a file has  been  read since the last time it was 
          modified.)

          Since  Linux 2.6.30, the kernel defaults to the behavior provided 
          by this option (unless noatime was  specified), and the 
          strictatime 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.

Puede verificar si estas opciones están configuradas en un sistema de archivos mirando en /proc/mounts .

Ejemplo

$ head -5 /proc/mounts
rootfs / rootfs rw 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=3976812k,nr_inodes=994203,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0

La diferencia con relatime contra noatime es que hará cambios, pero solo cuando la hora de acceso actual sea posterior a la hora de acceso anterior.

La hora de acceso solo se actualiza si la hora de acceso anterior fue anterior a la hora actual de modificación o cambio. (Similar a noatime, pero no interrumpe mutt ni otras aplicaciones que necesitan saber si un archivo se ha leído desde la última vez que se modificó).


Linux
  1. ¿Monitoreo de acceso a archivos de Linux?

  2. Comprender las marcas de tiempo de los archivos de Mac

  3. Programación de prólogo en Ubuntu

  4. Vea el sistema de archivos en tiempo real en OS X y Ubuntu

  5. shebang o no shebang

¿Cómo acceder a los archivos de Windows desde Ubuntu?

¿El indicador de hora no muestra la fecha/hora?

Cómo extraer un archivo RAR en Ubuntu

Cómo agregar un archivo de intercambio en Ubuntu 20.04

archivo:comando no encontrado

acceso concurrente al archivo linux