文件访问时间未更新

文件访问时间未更新

我刚刚/etc/resolv.conf使用命令查看了文件cat(或使用 mcedit 打开了文件)。现在当我使用ls -ul“访问时间”列出文件详细信息时,它不会更改/更新 - 具有相同的旧值。这很奇怪,因为对于任何其他文件,“访问时间”在 cat 之后都会更新。

答案1

调用df /etc/resolv.conf并注意它存在于哪个挂载点下。来自我的 Kubuntu 的示例:

$ df /etc/resolv.conf
Filesystem     1K-blocks  Used Available Use% Mounted on
tmpfs             806600  9660    796940   2% /run

令人惊讶的是,我的resolv.conf低于/run。真实情况是:

$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Nov 24  2016 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

然后我们需要知道它的挂载选项:

$ mount | grep " /run "
tmpfs on /run type tmpfs (rw,nosuid,noexec,relatime,size=806600k,mode=755)

注意与atime相关的选项。在我的例子中,这是relatimeman 8 mount解释:

relatime
更新相对于修改或更改时间的 inode 访问时间。仅当上次访问时间早于当前修改或更改时间时,才会更新访问时间。(类似于noatime,但不会破坏mutt或其他需要知道文件自上次修改以来是否已被读取的应用程序。)

(检查其余*atime选项以获得完整的图片。)

relatime如今非常常见。它节省了频繁写入的时间,但仍为atime需要它的程序提供服务。在我的 Kubuntu 中,只有这些挂载不使用relatime

$ mount | grep -v relatime
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)

可能您relatime也广泛使用。

这很奇怪,因为对于任何其他文件,“访问时间”都会在之后更新cat

也许“之前的访问时间早于当前修改或更改时间”,因此已atime更新。或者“其他文件”位于不同的挂载点(例如带有strictatime选项)。请注意,我的resolv.conf位于与整体不同的文件系统上/etc//etc/resolv.conf是指向其他地方的符号链接),因此一般来说,您甚至不应该假设同一目录中的“文件”位于同一文件系统上,位于同一挂载点下,具有相同的选项。

无论您的设置是什么,现在您都知道如何调查该问题。

相关内容