stat命令常用方式总结

简介:

  stat命令是用来显示文件inode中的内容的。我们平时的业务需求中可能会关注一个文件的更改时间,读写权限之类的信息。stat命令可以帮助我们把这些信息从一个文件的inode中提取并显示出来。

inode介绍:

  linux把一个文件存储在磁盘上的时候,会在磁盘上另外找一块地方来存储文件的元数据。存储这些数据的区域就叫做inode。inode里面东西比较多,一般比较关心的是以下几项:

    <1> 文件的时间戳,inode中一共有以下3个:

      a. access time, 最后一次访问的时间,只是访问,并没有修改。比如cat,head,tail之类的。

      b. modify time, 最后一次修改文件内容的时间。

      c. change time, 最后一次修改文件属性的时间,比如权限,大小之类的。

    <2> 文件的读写权限

    <3> 文件的字节数

    <4> 文件拥有者的UID和GID

  直接使用stat命令,就可以输出inode的大部分信息,比如 stat server:

  

 

日常使用

  <1> 监控文件状态

    有很多业务需要我们实时去监控文件的状态。比如,如果某个文件大小发生了变化,会起一个后台程序把发生变化的部分同步到某个数据库。stat输出信息判断方法:

       a. 当我们只是读取文件,并没有改变文件时,只有access time会发生变化,modify time 和 change time 不会变化。

       b. 当修改文件内容时, 如果使用vim之类的编辑软件,那么access time, modify time, change time都会发生变化。如果使用 > 或者 >> 修改文件,那么只有modify time 和 change time会发生变化,access time 不会变。

       c. 当修改文件属性,比如chmode,chown, 或者做硬链接的时候, change time 会发生变化,而 access time, modify time 不会发生变化。注意,软连接不会修改三者中的任何一个。因为软连接的原理就是重新创建一个新文件,新文件中保存旧文件的文件路径,这个和旧文件的属性完全没有关系。

       d. ls -l 中输出的是modify time,

 

  <2> 目录权限的判断

    目录在linux系统中也是以文件存在的,所以目录也有inode。目录文件中的内容是一系列目录项。每个目录项由2部分组成,文件名和inode号码。所以可以把目录的读权限和写权限对应到目录文件上理解。如果有读权限,代表可以读取目录文件中的文件名列表。有写权限代表可以在目录中创建,删除,重命名文件。有执行权限代表可以进入此目录。

 

  

posted @ 2018-07-24 22:50  Frogjie  阅读(1228)  评论(0编辑  收藏  举报