首先,我们进入虚拟机,cd进入一个目录,执行一条命令 stat +文件名,就会看到下图显示的界面
而用红线画出来的Access Modify Change就是要解释的内容。
Access: 文件最近一次被访问的时间
access time是文档最后一次次被读取的时间。因此阅读一个文档会更新它的access时间,但它的modify时间和change时间并没有变化。cat、more、less、grep、sed、tail、head这些命令都会修改文件的access时间。
例如 我们执行一下 cat+文件名 就会看到如下变化:
access时间发生了变化。
Modify: 文件内容最近一次被修改的时间
modify time是文件本身的内容发生了变化。[文档的modify时间也叫时间戳(timestamp)]。modify time只能改变为系统时间,不能改变任意时间。甚至用C程序来直接读写inode,也不会修改change time。
而ls -l命令之后看到的时间就是modify time;(注:ls -l命令不会修改access time)
用vim等工具编辑一个文件保存后,modify time会被修改。(因为没有安装g++所以不作显示)
注:vim命令会修改文件的access时间,无论文件内容是否改变;如果文件内容改变,还会修改文件的modify time,此时access time和modify time时间是不同的,access time是刚打开文件的时间,modify time是文件内容被保存退出的时间。
Change: 文件属性最近一次被修改的时间
change time是文档的索引节点(inode)发生了变化(比如位置、用户属性、组属性等)。chmod,chown,create,mv等动作会将Linux文件的change time修改为系统当前时间。
用wget等工具下载的文件,change time不会被修改。
我们来看看改变权限时发生的变化
发现change time变化了,而access time和modify time并没有发生改变。
当我们执行touch命令的时候又会发生什么改变呢?
我们发现access modify change三个时间都发生变化。
其实touch修改的文件的access modify时间,但是呢,modify时间改变后,access时间和change时间都会随之改变。