Linux下文件的三个时间(Atime,Mtime,Ctime)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下文件的三个时间(Atime,Mtime,Ctime)相关的知识,希望对你有一定的参考价值。

文件的三个时间

我们已经很熟悉windows系统了,那么我们在windows下新建一个文件,我们知道它在保存的时候肯定是会保存一下文件的创建时间之类的信息的,那么我们来看看windows下的一个文件保存了几个时间信息。

Linux下文件的三个时间(Atime,Mtime,Ctime)_linux

这是我在电脑找到的一个cpp文件,看它的属性是可以看到保存了这个文件的创建时间、修改时间、和访问时间三个时间。

那么在linux中是怎样的,我们在linux中新建一个文件,然后用stat命令查看文件信息,如下图:

Linux下文件的三个时间(Atime,Mtime,Ctime)_linux_02

可以从上图看到系统为我们保存了这个的三个时间,分别是Access time、Modify time、Change time,也就是访问时间、修改时间和状态时间。

那么与前面所说的windows下做一个对比:

在windows下,一个文件有:创建时间、修改时间、访问时间。

而在Linux下,一个文件也有三种时间,分别是:访问时间、修改时间、状态时间

那么可以知道,在linux中是文件是没有创建时间的,只是如果刚刚创建一个文件,毋庸置疑它的三个时间是都等于创建时间的,就像刚才创建的test文件,我们看到它的三个时间是相等的。那么在linux上这三个时间分别代表着什么,随着什么而改变:

>修改时间:文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间,当用vim对文件进行编辑之后保存,它的mtime就会相应的改变;
>访问时间:对文件进行一次读操作,它的访问时间就会改变。例如像:cat、more等操作,但是像之前的state还有ls命令对atime是不会有影响的;
>状态时间:当文件的状态被改变的时候,状态时间就会随之改变,例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的。

每个时间改变的例子

上面的文件信息中可以看到test文件的访问权限,那么我现在给拥有者添加执行权限,chmod u+x test,再此进行stat操作:

Linux下文件的三个时间(Atime,Mtime,Ctime)_linux_03

可以看到这个改变了它权限的操作知识改变了test的状态时间,其他两个时间是没右改变的。

现在对文件进行读操作,cat test,但此时我们的test中还没有写入什么东西,所以是不会有什么显示出来的

Linux下文件的三个时间(Atime,Mtime,Ctime)_vim_04

和之前的对比可以看到此时是只有访问权限改变了,其他权限没有变化。

后我们再来用vim指令对test进行编辑,给文件中简单的写入"Hello !"

Linux下文件的三个时间(Atime,Mtime,Ctime)_vim_05

咦,此时虽然说文件的修改时间发生了改变,但同时访问时间和状态时间也被改变了,那么到底是不是修改时间被改变就改变了文件的三个时间呢?其实这也很好理解,当用vim对文件进行了编辑,那么相应的也相当于访问了文件并且你对文件进行了内容上的添加,这个文件的的大小等状态也发生了变化,所以文件的访问时间和状态时间也会跟着改变,并不奇怪。那么如果我只是用vim命令,没有进行文件内容的添加而是直接退出,就只有它的访问时间发生了改变,说明vim操作先对文件进行访问,如下图所示:

Linux下文件的三个时间(Atime,Mtime,Ctime)_vim_06

单独查看三个时间的操作,除了可以通过stat来查看文件的mtime,ctime,atime等属性,也可以通过ls命令来查看,具体如下:

ls -lc filename 列出文件的 ctime (最后更改时间)
ls -lu filename 列出文件的 atime(最后存取时间)
ls -l filename 列出文件的 mtime (最后修改时间)

以上是关于Linux下文件的三个时间(Atime,Mtime,Ctime)的主要内容,如果未能解决你的问题,请参考以下文章

linux中文件的三种time(atime,mtime,ctime)

mtime,ctime,atime

Linux中ctime mtime atime文件时间的区别

Linux常用命令之 查找命令 find —— 细说 -atime,-mtime,-ctime

Linux命令:atime,mtime,ctime

Linux下find , atime, ctime,mtime