Linux系统文件有三个主要的时间属性,分别是 ctime(change time, 而不是create time), atime(access time), mtime(modify time)。后来为了解决atime的性能问题,还引入了一个relatime的属性,下面一一解释。


ctime, 很多朋友把它理解成create time,包括很多误导人的书籍也是这么写。实际上ctime是指change time。


mtime, 就是modify time。


mtime和ctime的区别在于,只有修改了文件的内容,才会更新文件的mtime,而对文件更名,修改文件的属主等操作,只会更新ctime。


举例说明: 对文件进行mv操作,mtime不变,ctime更新;编辑文件内容,mtime和ctime同时修改。其他操作的影响,可以自己试验。但是我发现对文件 执行touch操作,会同时修改mtime和ctime,所以具体修改哪个时间,还取决于不同命令自己的实现;


atime, 这个就是每次查看文件内容的时候会更新。比如cat操作,而ls操作是不会更新的。


你可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:


ls -lc filename 列出文件的 ctime


ls -lu filename 列出文件的 atime


ls -l filename 列出文件的 mtime


从kernel2.6.29开,还默认集成了一个 relatime的属性。这个功能我个人理解是为了解决atime的兼容性问题。因为在文件读操作很频繁的系统中,atime更新所带来的开销很大,所以 很多SA都在挂装文件系统的时候使用noatime属性来停止更新atime。但是有些程序需要根据atime进行一些判断和操作,所以Linux就推出 了一个relatime特性。


使用这个特性来挂装文件系统后,只有当mtime比 atime更新的时候,才会更新atime。事实上,这个时候atime和mtime已经是同一个东西了。所以这个选项就是为了实现对atime的兼容才 推出的。并不是一个新的时间属性。使用方法就是通过mount -o relatime /dir来挂装目录。