pupuk / blog

My New Blog. Record & Share. Focus on PHP, MySQL, Javascript and Golang.
MIT License
9 stars 2 forks source link

atime什么时候会发生变化? #17

Open pupuk opened 5 years ago

pupuk commented 5 years ago

缘由

网上有些资料已经比较过时了,和同事们讨论的时候,说cat命令会改变atime(access time),根据我自己以前的记忆,记得现在cat一个文件,atime并不会发生变化,原因大概认为,对于一些频繁访问的文件,如果每次访问,linux都去修改atime,会有比较大的IO负担(尽管可有有内存缓存等优化方案),而且很多程序对精准的atime需求并不强烈,所以取舍之后,大部分文件系统并不修改atime。为了兼容posix标准,引入了一个reltime(relative time),这个就是一个我目前比较浅显的理解了。

提问

如果对自己提问,那atime什么时候改变呢?这个问题需要考虑的,除了考虑历史的进程「手动表情」,还有设计的取舍,确实是一个值得探讨的问题。

背景知识

文件系统与inode 比如我们想创建一个文件,且想把文件里面的内容设置成abc,简单的,怎么实现呢? 我们可以在磁盘上申请一个空间,写入abc字符。 后来人们有了一些更加具体和强烈的需求: 这个文件我想有个文件名,不然这么多文件,我靠磁盘地址去访问吗? 文件需有有属性(权限),有些人可以访问,有些人不能访问。 文件需要有修改,访问时间等等。