在Linux系统下,我们可以通过stat指令来查看文件的时间。
stat 文件名
即可查看该文件的时间。
由上图可见,系统共显示了三个时间。
分别为:
Access:文件最后的访问时间
Modify:文件最后的修改时间
Change:对文件inode信息最后的修改时间
linux中的三个时间
①Modify time(mtime)
当该文件的内容数据更改时,就会更改这个时间。
内容数据:指的是文件的内容,而不是文件的属性或权限。
②Status time(ctime)——也称作Change time
当该文件的属性改变时就会更新这个时间。
③Access time(atime)
当该文件的内容被取用被访问时,就会更新这个读取时间,这个时间为我们最后一次访问的时间(例如我们使用cat命令去读取一个文件的内容时)
在用ls -l命令时,会显示一个时间,这个时间是Modify time(mtime)
那么使用ls命令如何查看文件的atime和ctime呢?
那么如何改变它们呢?
①Modify time(mtime)
文件的modify时间也叫时间戳(timestamp)
不用访问文件也可以修改文件的内容,即就是不会修改文件的access time也可以修改文件的modify time。
而当modify time 改变时,change time 也会随之而被修改。
因为文件的大小等也是文件的属性。
②Status time(ctime)——也称作Change time
修改文件权限后,文件的ctime发生了改变。
chmod、chown、create、mv等动作会将Linux文件的change time修改为系统当前时间。
③Access time(atime)
首先修改atime,修改文件内容即可。
阅读一个文件也会改变它的atime,而另外两个时间不会发生改变。
cat、more 、less、grep、sed、tail、head、vi、vim、nano、touch
以上这些命令都会修改文件的atime
可以看到,使用cat命令后,文件的Access time发生了改变。
修改权限后,文件的atime未发生改变。
不要使用vi访问。
当使用vi命令时:无论是否修改文件的内容,文件的三个时间都将被修改。
只是进入了vim编译器,而没有修改里面的任何内容。
从上面的过程我们发现了什么呢?
只要修改文件内容,不止mtime发生了改变,ctime也发生了改变。
修改权限后则只有ctime发生了改变。
修改atime后其他两个时间也未发生改变。
刚接触touch指令时
显示touch指令可以修改时间。
可以发现,touch -a指令修改了文件的atime及ctime。
(实质上发生改变的是atime)
touch-m指令则是修改了文件的mtime及ctime
(实质上发生改变的是mtime)