LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1043|回复: 11

文件的access time不是每次使用cat都能更新

[复制链接]
发表于 2008-3-12 16:40:55 | 显示全部楼层 |阅读模式
最近在看鸟哥的私房菜,确实是一本好书,很透彻。但在书上的129页介绍touch命令时说到用cat命令去读取某个文件时,就会改变该文件的atime属性,然而我使用“ls -l --time=atime”查看,发现该属性未变,这是怎么回事,如果cat不能改变atime,那么什么命令能改变它呢(除了通过touch命令或用touch加上参数a以外,vi等编辑器似乎不行),请各位指点迷津。
发表于 2008-3-12 17:43:25 | 显示全部楼层
~ # ls -l --time=access .exrc
-rw-r--r--  1 root root 1124 Mar 11 15:39 .exrc
:~ # cat .exrc
....
:~ # ls -l --time=access .exrc
-rw-r--r--  1 root root 1124 Mar 12 18:29 .exrc

我这里cat改变access 时间,
--time_atime和access相同

vi也改变 (不存盘情况下,存盘当然更改变)
回复 支持 反对

使用道具 举报

发表于 2008-3-12 20:34:11 | 显示全部楼层
另外注意一点 如果你fstab中磁盘挂载选项中有noatime 那么这个是怎么都不会有了 嘿嘿
回复 支持 反对

使用道具 举报

发表于 2008-3-12 20:41:06 | 显示全部楼层
补充一点,用 touch 可以将其设置为任意时间,具体的见 man touch
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-12 21:52:24 | 显示全部楼层
感谢各位对我问题的耐心解答,按照各位讲的方法我尝试了一下,但问题依旧,我把我实验的步骤在这儿帖一下,希望各位能发现我的纰漏:
#先建一个文件
$ cat > test
'然后随便输入一些文字后+回车+ctrl-d'
$ ll --time=access --full-time  test     //先查看一下文件的atime,好和后面作比对
$ cat test;cat test;cat test              //多弄几次,确保“正确修改”了atime
$ ll --time=access --full-time  test     //和前面的atime作比对

我的发现:按上述步骤执行,有的时候的确会更改成功,尤其是第一次执行cat,但如果将上面的整个过程进行多遍,可能就会有问题——atime不变了。(我发现10次都很难有一次修改成功),劳烦各位大侠再帮我一把,现在我都有点怀疑linux的能力了(我已经努力在用命令行了)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-12 21:58:10 | 显示全部楼层
还有补充:
即使将上面实验中的  “cat test;cat test;cat test”  替换成cat >> test ,并加入一些字符(文件test这时已经被修改了),我发现mtime变了,但是atime不知为什么就是不给我动一下。
vi的效果与cat一样,有时会变,有时又不会,而且会变的概率就像中奖一样。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-12 22:35:58 | 显示全部楼层
大家来讨论一下,我先说说我的猜想:  可不可能该文件在第一次被访问时由硬盘读入内存,而后的每次调用cat或vi使用的都是内存中的文件而非硬盘中的,又对内存中的文件访问不会造成atime的改变 ,所以其atime并未更新,而如果以vi编辑器修改文件的话,由于硬盘中的文件会被更新,所以就会更新atime和mtime了。
      这是我给出的感觉比较合理的解释了,但这个解释似乎有存一个致命的漏洞:
      以vi编辑器修改文件test能够使其atime更新,那么为什么cat >> test达不到同样的效果,难道cat >> test并非我们通常意义上的修改文件(该命令不是往文件后面加入数据吗)。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-13 18:46:46 | 显示全部楼层
有没有实验结果和我一样的吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-3-14 11:41:14 | 显示全部楼层
论坛里有没有和我一样发现cat等编辑器命令不能改变atime的网友?
请大家实验一下,我相信通过跟踪linux操作系统的行为,可以对它有一个更为深入的理解。
希望高手给予解答。
回复 支持 反对

使用道具 举报

发表于 2008-3-14 12:45:25 | 显示全部楼层
我这里 atime 是变的, 无论是 touch, vi 还是 cat
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表