时常会遇到根据文件的时间属性做操作的情况,Linux下的文件相关的时间属性有三个。atime,ctime,
mtime。笔者也时常搞混,每次遇到都会人肉搜索,闲暇之际准备将这个知识彻底搞懂。

看过权威文档,写的很容易产生误解,现在根据自己的理解给出3个参数的解释:

ctime   文件内容及文件属性的任何变化(change),ctime都会更新时间。
mtime   记录最近一次文件内容变化(modify)的时间。
atime   记录文件内容或文件属性变化后的第一次访问(access)时间。 ---这个需要注意,笔者踩过坑


修改文件内容后,哪些参数在变化?

wKioL1ncYF2hiVRIAACfkaBbqak537.png-wh_50

当我们往文件中追加内容后,我们可以看到mtime,ctime均更新了时间。
atime没有发生变化。

wKiom1ncz2yDGzCWAACibriTPXA357.png-wh_50

当我们修改文件属性后,我们可以看到只有ctime更新了时间。
mtime,atime没有发生变化。

wKioL1ncYF6R3pR8AACjanck4vs190.png-wh_50

当我们使用tail,more,less等查看属性或内容变更后的文件,此时atime也更新了时间。
而如果一直没有访问这个文件,这个文件的atime会一直不会更新。


一个普遍的应用场景:

有些业务需要定时删除2个月之前的文件。此场景比较常用,应使用 find dir -mtime +60。而如果使用atime,ctime会遇到惊喜。