ls -lu 不给出最后访问时间

ls -lu 不给出最后访问时间

的联机帮助页ls说:

   -u     with -lt: sort by, and show, access time; with -l: show access time and sort by name;
          otherwise: sort by access time

但这似乎不起作用:

test@debian:~$ date > file
test@debian:~$ date
Sun Jan 17 13:21:12 CET 2016
test@debian:~$ cat file 
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file 
-rw-r--r-- 1 test test 29 Jan 17 13:21 file
test@debian:~$ date
Sun Jan 17 13:22:02 CET 2016
test@debian:~$ cat file 
Sun Jan 17 13:20:10 CET 2016
test@debian:~$ ls -lu file 
-rw-r--r-- 1 test test 29 Jan 17 13:21 file

人们应该期待类似的内容(因为上次访问时间是在 13:22 或更晚):

-rw-r--r-- 1 test test 29 Jan 17 13:22 file

解释是什么?文件是否已缓冲?

答案1

默认情况下,您的文件系统已安装relatime。如果访问时间已经晚于或等于文件的修改时间,则不会更新访问时间。

这是一种(违反 POSIX)优化,以避免每次读取单个文件都会导致写入磁盘。

明显的 atime 更新不受缓冲的影响。 (lazyatime将缓冲 atime 长达 24 小时 - 但内存中的 atime 每次都会更新,这就是ls将显示的内容。)。

相关内容