1

我想检查应用程序是否从一组文件中读取,但我无法控制文件系统,并且它设置为 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

4

0 回答 0