您的位置:首页 > 运维架构 > Linux

linux下的stat命令查看文件系统的时间

2016-12-25 14:33 525 查看
文件系统的三个时间>

   对于window操作系统相信大家都不陌生,如果我们在window下创建一个文件,window操作系统就会对这个文件产生相应的描述信息,这个文件存在创建时间,修改时间和访问时间.那仫在linux操作系统下新建一个文件是不是也会出现相应的描述信息呢?

    答案是肯定的,只是在linux系统下是没有该文件的创建时间的,只有访问时间,修改时间和状态改动时间,具体情况分析见下图:

   


    通过上图我们发现在linux下创建一个文件存在Inode号,文件的链接数和Block这些属性,这主要和linux下文件的属性有关.在linux操作系统下一个文件具有一个Inode号,一个Inode号对应至少一个block块,block是访问文件内容的结构,文件block块的个数和文件的大小有关,且block的大小是固定的.

    今天主要理解的是文件系统中三个时间>

一.Access---访问时间atime

    当我们访问这个文件的时候,这个时间就会被改变,这个访问时间提示的是最后一次我们访问的时间。例如当我们使用cat,more和less等命令查看文件的内容时,该文件的访问时间就会被更新

二.Modify---修改时间mtime

    这里所说的就是文件内容最后的修改时间,不涉及该文件的权限问题。例如当我们使用vim,echo等命令向文件中写信息的时候该修改时间会被更新.

三.Change---状态改动时间ctime

    这里所说的改变就是改变Inode中的信息,例如当修改文件系统中的links链接数,size文件的大小,文件的权限,blocks文件的blocks数时状态改动时间就会被修改.

  下面以一个实际的栗子来观察这三个时间的改动>

   1.使用cat +文件名的方式读取该文件的内容时访问时间被修改

   


   2.使用echo命令向文件99.c中添加信息

   


  3.当修改文件的权限时该状态修改时间会被改变

 

   


   现在应该可以解决之前那个问题了,为什仫向文件中写信息的时候,该文件的修改时间和状态改动时间都会被修改?当写信息的时候改动了文件的size,由上述举例可知当改动了文件的size时文件的状态改动时间就会被修改.

touch和三个时间的关系>

touch指令的功能为:   

       1.新建一个文件

       2.修改文件的时间戳就是把已经存在的文件时间变为系统当前的时间,把数据原封不动的保存下来

        1.-a:或--time=atime或--time=access或--time=use 只更改存取时间;
2.-c:或--no-create 不建立任何文件;
3.-d:<时间日期> 使用指定的日期时间,而非现在的时间;
4.-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;
5.-m:或--time=mtime或--time=modify 只更该变动时间;
6.-r:<参考文件或目录> 把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;
7.-t:<日期时间> 使用指定的日期时间,而非现在的时间;
8.--help:在线帮助;
9.--version:显示版本信息。

    touch -a

    


     touch -m,修改mtime和ctime,但实质修改的是mtime

    


      touch -m修改的是mtime为什仫ctime也会被修改呢?那是因为当这个文件被touch之后无论进行什仫处理,都会修改该文件的Inode,所以ctime是一定会修改.

 总结>

   1.刚开始创建文件的时候这三个时间atime,mtime和ctime是相等的,此时并未进行任何的操作,可默认就是该文件的创建时间.

   2.当该文件被读之后,只会改变atime的值

   3.当修改文件的内容信息的时候会同时修改文件的mtime和ctime

   4.当inode被修改或者文件的权限被修改之后该文件的ctime就会被修改

在这里就分享结束了~~~

   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐