zoukankan      html  css  js  c++  java
  • 文件的时间属性(摘自网友的博客)

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

    注明:本文摘自网友的博客,因觉得自己做不到这么好。所以全文复制过来的。

    文 件系统的三个时间

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

  • 相关阅读:
    DevExpress ASP.NET Core Controls 2019发展蓝图(No.6)
    DevExpress v18.2版本亮点——Analytics Dashboard篇(二)
    VS插件CodeRush for Visual Studio发布v18.2.9|附下载
    DevExpress 2019 .NET产品现已完全支持Visual Studio 2019
    DevExpress v18.2版本亮点——Analytics Dashboard篇(一)
    Java开发神器——MyEclipse CI 2019.4.0 全新发布(附下载)
    DevExpress ASP.NET Core Controls 2019发展蓝图(No.5)
    JS原型链中的prototype与_proto_的个人理解与详细总结
    ASP.NET Core中的依赖注入(5):ServicePrvider实现揭秘【补充漏掉的细节】
    ASP.NET Core中的依赖注入(5): ServiceProvider实现揭秘 【解读ServiceCallSite 】
  • 原文地址:https://www.cnblogs.com/kaishirenshi/p/7677734.html
Copyright © 2011-2022 走看看