Linux-linux cp命令为何不会修改源文件的访问时间(Access time)

发布于 2016-11-10 18:58:00 字数 441 浏览 1919 评论 3

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晚风撩人 2017-08-04 10:09:52

这个争论没有多大意义,可以自己写一个cp来做测试。

泛泛之交 2017-04-02 02:18:48

access time不更新的问题有历史原因的。
在2.6内核之前,Access time顾名思义,每次访问的时候,都会更新这个atime,
但后来发现OS更新atime的开销很大,尤其是读频繁的环境。

所以后来mount推出了一个noatime的选项,来禁止更新atime。

再后来为了兼容atime,又增加了一个兼容的选项relatime,只有在modify time大于access time时,才更新文件的access time ,这也成为了很多系统的默认设置。

所有,有时候,access time看起来就不那么靠谱了。

晚风撩人 2016-12-09 11:05:08

测试了一下,好像时间是会变的
截图如下

再来一个图吧,这次时间没有发生变化,是因为我刚才复制了一下

可以看到最开始那个test.php_back是我在27分时备份出来的,而再次备份显示的文件访问时间就没有变化,我怀疑可能是因为文件被读取后暂时在内存中,所以再次复制的时候直接写入,就不用再次访问文件了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文