linux 下文件的3种时间状态 atime ctime mtime

来源:互联网 发布:光电效应实验数据表格 编辑:程序博客网 时间:2024/05/16 04:46
我们在windows下新建一个文件,我们知道它在保存的时候肯定是会保存一下文件的创建时间之类的信息的。



看它的属性是可以看到保存了这个文件的创建时间、修改时间、和访问时间三个时间。
那么在linux中是怎样的,我们在linux中新建一个文件,然后用stat命令查看文件信息,如下图:

只是如果刚刚创建一个文件,毋庸置疑它的三个时间是都等于创建时间的,如上图的test.c我们看到它的三个时间是相等的。那么在linux上这三个时间分别代表着什么,随着什么而改变:
 

>修改时间(mtime):文件的内容被最后一次修改的时间,我们经常用的ls -l命令显示出来的文件时间就是这个时间,当用vim对文件进行编辑之后保存,它的mtime就会相应的改变;

>访问时间(atime):对文件进行一次读操作,它的访问时间就会改变。例如像:cat、more等操作,但是像之前的state还有ls命令对atime是不会有影响的;

>状态时间(ctime):当文件的状态被改变的时候,状态时间就会随之改变,例如当使用chmod、chown等改变文件属性的操作是会改变文件的ctime的。

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

举例说明: 对文件进行mv操作,mtime不变,ctime更新;编辑文件内容,mtime和ctime同时修改。

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

>我们现在给test.c的拥有这加上执行权限chmod u+x test,再此进行stat操作:


发现只有ctime 改变其他都没变,说明修改了文件的属性时,ctime 随之改变。

>接下来对文件进行读操作 cat test.c 然后在使用stat test.c


         由于未对文件进行写入所以读不出任何东西,随后查看文件的3个时间,发现只有atime 发生了改变,所以atime的时间带表最 后一次读文件时的时间
      
          >对文件进行写操作 给文件中写入 头文件 使用 vim  test.c 然后在使用stat test.c 查看

    由上图可以看出 文件的3个时间都发生 了改变,这其实并不说明了mtime发生了改变另外2个也要随之改变,那么出现上边的情     况是什么原因呢,其实是因为我们修改文件内容的时候:
     Ⅰ.我们要先访问文件,所以文件访问时间(atime)发生了改变。
     Ⅱ.文件的属性比如文件的大小也发生了改变,所以就相当于修改了文件的属性,所以ctime发生了改变
     >当我们使用vim test.c而不对内容进行修改的时 

    发现只有访问时间生了改变,所以说明在vim对文件进行写入时,先对文件进行访问。
    >使用 echo “hello” >> test.c 对文件进行写入
    此时访问时间没发生变化,由于用echo对文件进行写入时便没有对文件进行访问而直接进行写入

     单独查看三个时间的操作

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

     ls -lc filename 列出文件的 ctime (最后更改时间)

     ls -lu filename 列出文件的 atime(最后存取时间)

     ls -l filename 列出文件的 mtime (最后修改时间)

 



0 0
原创粉丝点击