是不是对ctime,atime,mtime的含义不是很清楚,而经常混淆呢,下面通过stat的用法来介绍下这三者的区别。
关于stat的用法很简单,主要是用来显示文件或文件系统的状态信息(stat - display file or file system status
)
下面请看实例:
创建一个文件1.t
touch 1.t
查看他的状态信息
关注三个时间以及一个inode信息
我们试一下当修改1.t这个文件时会发生什么?
可以看到inode信息未发生变化,只有mtime和ctime发生了变化,atime没有发生变化,这个很好理解,因为我们没有读取该文件,那我们来读取一下
对比一下,atime发生了变化,好像是文件被读取了才变化!
如果我们给该文件增加可执行权限呢?
只有ctime发生了变化
那么我们删除文件里的内容呢?
atime,ctime和mtime都发生了变化,inode节点也发生了变化。
到这里是否对这三个time有所启发呢?atime是只有当文件被读取时才会发生改变,ctime是changetime,即发生改变时相应的ctime才会变化,例如权限,内容等,mtime则只有在inode节点保持不变的情况下,只要不删除文件,mtime就不会发生变化
那我们对文件名进行改名操作呢?
文件的inode没有发生变化,只有ctime发生了改变,因为文件名改变了,所以ctime也会改变!
最后我们在做一个软硬链连接看下
软连接没有变化
硬连接的ctime发生了变化
那么我们来总结下吧:
Access time(atime):是指取用文件的时间,常见的操作有:使用编辑器查看文件内容,使用cat命令显示文件内容,使用cp命令把该文件(即来源文件)复制成其他文件,或者在这个文件上运用grep sed more less tail head 等命令,凡是读取而不修改文件的操作,都改变文件的Access time. Modify time(mtime):是指修改文件内容的时间,只要文件内容有改动或存盘的操作,就会改变文件的Modify time,平常我们使用ls –l查看文件时,显示的时间就是Modify time Change time(ctime):是指文件属性或文件位置改动的时间,如使用chmod,chown,mv指令集使用ln做文件的硬连接,就会改变文件的Change time.