时常会遇到根据文件的时间属性做操作的情况,Linux下的文件相关的时间属性有三个。atime,ctime, mtime。笔者也时常搞混,每次遇到都会人肉搜索,闲暇之际准备将这个知识彻底搞懂。 看过权威文档,写的很容易产生误解,现在根据自己的理解给出3个参数的解释: ctime 文件内容及文件属性的任何变化(change),ctime都会更新时间。 mtime 记录最近一次文件内容变化(modify)的时间。 atime 记录文件内容或文件属性变化后的第一次访问(access)时间。 ---这个需要注意,笔者踩过坑 修改文件内容后,哪些参数在变化?
当我们往文件中追加内容后,我们可以看到mtime,ctime均更新了时间。 atime没有发生变化。
当我们修改文件属性后,我们可以看到只有ctime更新了时间。 mtime,atime没有发生变化。
当我们使用tail,more,less等查看属性或内容变更后的文件,此时atime也更新了时间。 而如果一直没有访问这个文件,这个文件的atime会一直不会更新。
一个普遍的应用场景:
有些业务需要定时删除2个月之前的文件。此场景比较常用,应使用 find dir -mtime +60。而如果使用atime,ctime会遇到惊喜。