Linux-linux cp命令为何不会修改源文件的访问时间(Access time)
RT,一个很简单的测试程序:
ajaxhe@bbs:~/program/apue/ch14$ stat ch14-4.c
File: "ch14-4.c"
Size: 1399 Blocks: 8 IO Block: 4096 普通文件
Device: 805h/2053d Inode: 21503316 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1007/ ajaxhe) Gid: ( 1007/ ajaxhe)
Access: 2012-12-10 18:10:07.320437053 +0800
Modify: 2012-12-07 20:05:32.000437237 +0800
Change: 2012-12-07 20:05:32.036989833 +0800
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这个争论没有多大意义,可以自己写一个cp来做测试。
access time不更新的问题有历史原因的。
在2.6内核之前,Access time顾名思义,每次访问的时候,都会更新这个atime,
但后来发现OS更新atime的开销很大,尤其是读频繁的环境。
所以后来mount推出了一个noatime的选项,来禁止更新atime。
再后来为了兼容atime,又增加了一个兼容的选项relatime,只有在modify time大于access time时,才更新文件的access time ,这也成为了很多系统的默认设置。
所有,有时候,access time看起来就不那么靠谱了。
测试了一下,好像时间是会变的
截图如下
再来一个图吧,这次时间没有发生变化,是因为我刚才复制了一下
可以看到最开始那个test.php_back是我在27分时备份出来的,而再次备份显示的文件访问时间就没有变化,我怀疑可能是因为文件被读取后暂时在内存中,所以再次复制的时候直接写入,就不用再次访问文件了