猫为什么不更改访问时间?


25

调用文件的第二次调用不会更新访问时间。我期望每次显示文件内容时都会更新访问时间。

如果在Web浏览器中打开文件,则会看到相同的行为。它的访问时间不会一直更新。

我误会访问时间了吗?这两个猫叫声有什么不同?

$触摸测试
统计测试
  文件:`test'
  大小:0块:0 IO块:4096个常规空文件
设备:803h / 2051d索引节点:152694链接:1
访问:(0664 / -rw-rw-r--)Uid:(1001 / aaron)Gid:(1001 / aaron)
访问:2012-08-21 11:05:40.586020996 +0200
修改:2012-08-21 11:05:40.586020996 +0200
变更:2012-08-21 11:05:40.586020996 +0200
 出生时间:-

$ vim测试
统计测试
  文件:`test'
  大小:5块:8 IO块:4096个常规文件
设备:803h / 2051d索引节点:152694链接:1
访问:(0664 / -rw-rw-r--)Uid:(1001 / aaron)Gid:(1001 / aaron)
访问:2012-08-21 11:05:52.890021630 +0200
修改:2012-08-21 11:06:31.606023626 +0200
变更:2012-08-21 11:06:31.638023629 +0200
 出生时间:-

$猫测试
测试

统计测试
  文件:`test'
  大小:5块:8 IO块:4096个常规文件
设备:803h / 2051d索引节点:152694链接:1
访问:(0664 / -rw-rw-r--)Uid:(1001 / aaron)Gid:(1001 / aaron)
访问:2012-08-21 11:06:44.662024298 +0200
修改:2012-08-21 11:06:31.606023626 +0200
变更:2012-08-21 11:06:31.638023629 +0200
 出生时间:-

$猫测试
测试

统计测试
  文件:`test'
  大小:5块:8 IO块:4096个常规文件
设备:803h / 2051d索引节点:152694链接:1
访问:(0664 / -rw-rw-r--)Uid:(1001 / aaron)Gid:(1001 / aaron)
访问:2012-08-21 11:06:44.662024298 +0200
修改:2012-08-21 11:06:31.606023626 +0200
变更:2012-08-21 11:06:31.638023629 +0200
 出生时间:-

Answers:


44

http://en.wikipedia.org/wiki/Stat_(system_call)

对时代的批评

写入文件会更改其mtime和ctime,而读取文件会更改其atime。结果,在兼容POSIX的系统上,读取文件会导致写操作,这已受到批评。通常可以通过在/ etc / fstab中添加安装选项来禁用此行为。

但是,关闭即时更新会破坏POSIX的合规性,某些应​​用程序(尤其是mutt邮件阅读器)(在某些配置中)和某些文件使用情况监视实用程序(尤其是tmpwatch)会受到破坏。在最坏的情况下,不及时更新可能会导致某些备份程序无法备份文件。

Linux内核开发人员IngoMolnár称其为“也许是有史以来最愚蠢的Unix设计思想”,并补充道:“ [T]对此有所了解:'对于从磁盘读取的每个文件,请执行...写操作。然后,对于每个已经缓存的文件以及我们从缓存中读取的每个文件,...写入磁盘!'“他进一步强调了性能影响:

迄今为止,Atime更新是Linux目前最大的IO性能缺陷。摆脱更新atime会带给我们更多的日常Linux性能比过去10年的所有页缓存的加速,合并

如何知道noatime或relatime是内核中的默认挂载选项?

man mount
....
   relatime
          Update inode access times relative to  modify  or  change  time.
          Access time is only updated if the previous access time was ear
          lier than the current modify or change time. (Similar  to  noat
          ime,  but  doesn't break mutt or other applications that need to
          know if a file has been read since the last time  it  was  modi‐
          fied.)

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

这就是安装特定分区的方式,以及为什么cat无法按我预期的那样更新访问时间。


关于Ubuntu的如何处理的atime更多信息askubuntu.com/questions/2099/...
nelaaro

这是有关如何通过不同的安装选项影响时间的较早的讨论。linux.koolsolutions.com/2009/01/30/...
nelaaro
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.