我想检查应用程序是否从一组文件中读取,但我无法控制文件系统,并且它设置为 relatime。我不是管理员,所以无法更改。
据我了解,这意味着 atime 不会更新,除非它超过 24 小时,或者早于 mtime 或 ctime。我计划通过将每个文件的 atime 设置为遥远的过去来解决这个问题 - 我不在乎实际时间是多少,只要我能看到它已被访问。
如果我只是选择一个已搁置一段时间未读的随机文件,则此方法有效:
newdevel15-654: stat file.txt
File: `file.txt'
Size: 165462 Blocks: 336 IO Block: 65536 regular file
Device: 1dh/29d Inode: 26404024 Links: 1
Access: (0644/-rw-r--r--) Uid: (10908/ userid) Gid: (10908/ userid)
Access: 2013-06-19 10:45:38.337067000 -0400
Modify: 2013-06-11 09:01:58.339063000 -0400
Change: 2013-06-11 09:01:58.339063000 -0400
cat file.txt
newdevel15-656: stat file.txt
File: `file.txt'
Size: 165462 Blocks: 336 IO Block: 65536 regular file
Device: 1dh/29d Inode: 26404024 Links: 1
Access: (0644/-rw-r--r--) Uid: (10908/ userid) Gid: (10908/ userid)
Access: 2013-07-05 17:36:55.175305000 -0400
Modify: 2013-06-11 09:01:58.339063000 -0400
Change: 2013-06-11 09:01:58.339063000 -0400
但是,如果我尝试手动将访问时间设置为过去以触发另一个更新,我不会得到任何结果。
newdevel15-665: touch -a -d "last month" file.txt
newdevel15-667: stat file.txt
File: `file.txt'
Size: 165462 Blocks: 336 IO Block: 65536 regular file
Device: 1dh/29d Inode: 26404024 Links: 1
Access: (0644/-rw-r--r--) Uid: (10908/ userid) Gid: (10908/ userid)
Access: 2013-06-05 17:40:16.968955889 -0400
Modify: 2013-06-11 09:01:58.339063000 -0400
Change: 2013-07-05 17:40:16.970602000 -0400
cat file.txt
newdevel15-677: stat file.txt
File: `file.txt'
Size: 165462 Blocks: 336 IO Block: 65536 regular file
Device: 1dh/29d Inode: 26404024 Links: 1
Access: (0644/-rw-r--r--) Uid: (10908/ userid) Gid: (10908/ userid)
Access: 2013-06-05 17:42:56.240850683 -0400
Modify: 2013-06-11 09:01:58.339063000 -0400
Change: 2013-07-05 17:42:56.242420000 -0400
我看到我的触摸更新了 ctime 字段,但这无关紧要 - 如果有的话,现在有两个条件(atime > 24 小时前和 ctime > atime)需要 atime 更新。我通过触摸修改的数据是否与系统正在查看以确定是否需要 atime 更新的数据不同?
我目前在 RedHat 上,内核版本 2.6.32-358.0.1.el6.x86_64