¿Por qué ordenar archivos por tiempo de acceso no funciona?

12

Traté de usar el comando ls --time=atime

estaba funcionando en un directorio pero no estaba funcionando en otro directorio. Abrí ciertos archivos en vim, evince y otras aplicaciones, pero después de los tiempos de acceso al archivo de comandos no cambiaron.

Cuando escribo, touch file.txtel tiempo de acceso cambia, pero cuando escribo, vim file.txtel tiempo de acceso no cambia.

¿Que esta mal aquí?

xralf
fuente
¿Qué sistema operativo estás ejecutando? Muchas distribuciones modernas de Linux apagan atime; está desactivado por defecto en los últimos núcleos de Linux.
Gilles 'SO- deja de ser malvado'
Estoy ejecutando Ubuntu 10.04.
xralf
¿Qué haces después de correr vim file.txt? ¿Dejas vim por :qo :wq? Si no escribe, vimno modifica el tiempo de acceso del archivo, esto es por diseño.
rozcietrzewiacz
Ahora tengo menos archivos en el directorio y los tiempos de acceso se cambian con vim y no necesito editar el archivo, pero cuando abro el archivo con .jpgextensión no cambia. Cuando lo abro en el visor de imágenes, tampoco cambia. Necesito cambiar el tiempo de acceso cada vez que alguna aplicación lee el archivo.
xralf

Respuestas:

14

Con las opciones de montaje predeterminadas, los tiempos de acceso se manejan de manera especial en Linux:

relatime- Un montaje del sistema de archivos con esta opción hace que el tiempo de acceso se actualice si son (antes de que ocurra la actualización) antes del tiempo de modificación. Esto reduce significativamente las escrituras causadas por las actualizaciones de atime.

La relatimeopción de montaje se convirtió en la opción predeterminada desde Linux kernel 2.6.30. Esa es la razón para ls --time=atimeno enumerar lo que espera.

Solución: para utilizar un comportamiento estricto (heredado) para atime, utilice lastrictatimeopción de montaje (por ejemplo, en/etc/fstab).

Nota: Para deshabilitar completamente las actualizaciones de atime, se puede usar noatime.

Stéphane Gimenez
fuente
Esto ayudó Gracias. ¿Cuánto más lento será el sistema strictatime?
xralf
las actualizaciones de atime son bastante costosas (un acceso de disco programado para actualizar los inodos cada vez que se accede al contenido de su archivo). En particular, si hay muchos archivos pequeños involucrados, las actualizaciones de atime pueden duplicar la carga del disco. La mayoría de las veces, los programas que dependen de los tiempos de acceso solo quieren verificar si atime> mtime o no. Por lo tanto, la nueva opción predeterminada relatimeconserva la compatibilidad para esos programas. De hecho, muy pocos programas aún confían en esto, y a menudo es seguro de usar noatime.
Stéphane Gimenez
Me gusta la strictatimecaracterística como la pruebo hoy, pero si hará que el sistema sea lento, me gustaría configurarlo strictatimesolo en ciertos directorios, si es posible.
xralf
1
Bueno, en la práctica es como máximo 1% o 2% más lento, tal vez hasta 5% en un servidor con alta carga de disco. Bueno, si realmente le importa el rendimiento, es posible restringir las actualizaciones de atime a un directorio específico usando un fs dedicado montado strictatimeque usaría este directorio como punto de montaje.
Stéphane Gimenez
2

Puede desactivar la grabación del tiempo de acceso para algunos sistemas de archivos (buscar noatimeen /etc/fstab). Para probar esto, puede intentarlo y touch -a file; ls -l --time=atime fileluego repetir touch -a file; ls -l --time=atime filepara ver si cambia.

El lscomportamiento se explica por man ls: ls -l --time=atimemuestra la hora de acceso en la columna de fecha / hora. Para ordenar por esta clave, también debe usarla --sort=time.

Si por "el tiempo no ha cambiado" quiere decir que muestra el mismo resultado, ya sea porque atime está deshabilitado para el sistema de archivos (ver /etc/fstab) o porque el tiempo de acceso es realmente el mismo que el tiempo de modificación (bastante común).

Tenga en cuenta que la lista de archivos no cambia su tiempo de acceso: no solo se accede a los archivos ls, solo el caché de inodo .

l0b0
fuente
Cuando escribo que ls -l --time=atimela hora no cambia (supongo que la columna con la hora es atime) y el orden de clasificación no cambia, los archivos con la última hora deben estar al principio o al final de la lista (si se accedió por última vez) )
xralf
@xralf ¿Repetiste ambos touch y ls? Edité la respuesta para hacerlo más evidente.
rozcietrzewiacz
Cuando escribo touch file.txt, el tiempo de acceso cambia, pero cuando escribo vim file.txt, el tiempo de acceso no cambia.
xralf
1

También puede ser útil cuando se realiza una prueba como esta para agregar el --full-timeindicador a lsfin de que pueda ver segundos y segundos secundarios para que pueda ver el efecto sin estar limitado por límites de minutos.

ssb
fuente