为什么按访问时间对文件排序不起作用?

为什么按访问时间对文件排序不起作用?

我尝试使用命令 ls --time=atime

它在一个目录中工作,但在另一目录中不起作用。我在 vim、evince 和其他应用程序中打开了某些文件,但在命令之后文件访问时间没有改变。

当我键入时,touch file.txt访问时间会更改,但当我键入时,vim file.txt访问时间不会更改。

这里有什么问题吗?

答案1

使用默认挂载选项,访问时间在 Linux 上以特殊方式处理:

relatime– 如果访问时间(在更新发生之前)早于修改时间,则使用此选项挂载的文件系统会导致访问时间被更新。这显着减少了 atime 更新引起的写入。

relatimemount 选项已设为默认选项自从Linux 内核 2.6.30。这就是ls --time=atime没有列出您期望的内容的原因。

解决方案:要对 atime 使用严格(传统)行为,请使用strictatime安装选项(例如在 中/etc/fstab)。

笔记:要完全禁用 atime 更新,可以使用noatime

答案2

您可以关闭某些文件系统的访问时间记录(noatime在 中查找/etc/fstab)。要测试这一点,您可以尝试touch -a file; ls -l --time=atime file,然后重复touch -a file; ls -l --time=atime file查看它是否发生变化。

ls行为的解释如下man lsls -l --time=atime在日期/时间列中显示访问时间。要按此键排序,您--sort=time还需要使用。

如果您所说的“时间未更改”意味着它显示相同的结果,那是因为文件系统禁用了 atime(请参阅 参考资料/etc/fstab),或者因为访问时间实际上与修改时间相同(很常见)。

注意清单文件确实不是更改其访问时间 - 文件不会被 访问ls,只有索引节点缓存

答案3

在像这样的测试中添加标志也可能很有用--full-timels这样您就可以看到秒和亚秒,这样您就可以看到效果而不受分钟边界的限制。

相关内容