• Linux命令:stat命令


    1 简介

    stat命令:显示文件或文件系统的状态

    2 说明

    使用:stat [OPTION]… FILE
    常用选项:

    • -L, --dereference:如果一个文件是一个链接文件,显示链接指向的文件的信息。不加-L时,默认显示的是链接文件本身
    • -f, --file-system:显示文件系统的状态而不是文件本身的状态
    • -c --format=FORMAT:按照FORMAT输出内容;输出内容末尾会自动换行
    • -c --printf=FORMAT:和–format类似,不过末尾不输出换行符
    • -t, --terse:以简洁的形式输出,具体的每个FORMAT代表什么参考下面
    • 文件输出内容为:%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
    • 文件系统输出内容为:%n %i %l %t %s %S %b %f %a %c %d,需要在-t后跟选项:–file-system

    文件的FORMAT:

    • %a:八进制的权限位,如:644
    • %A:以人类可读的形式显示权限位和文件类型
    • %b:分配的块数
    • %B:分配的大小
    • %C:SELinux安全上下文字符串
    • %d:十进制设备编号
    • %D:十六进制的设备编号
    • %F:文件类型
    • %g:属组的gid
    • %G:属组的组名
    • %h:硬链接数
    • %i:inode号
    • %m:挂载点
    • %n:文件名
    • %N:带引号的文件名,如果是符号链接则解除引用
    • %s:文件大小,单位是bytes
    • %u:属主的uid
    • %U:属主的用户名
    • %w:文件创建时间,人类可读;-未知
    • %W:文件创建时间,自纪元以来的秒数;0表示未知
    • %x:上次访问时间,人类可读
    • %X:上次访问时间,从Epoch到现在的秒数
    • %y:上次修改数据的时间,人类可读
    • %Y:上次修改数据的时间,距离Epoch的秒数
    • %z:上一次状态改变的时间,人类可读
    • %Z:上次状态改变的时间,从Epoch到现在的秒数

    文件系统的FORMAT:

    • %a:非超级用户可用的空闲块
    • %b:文件系统中数据块总数
    • %c:文件系统中文件节点总数
    • %d:文件系统中文件节点的空闲数
    • %f:文件系统中空闲的块
    • %i:十六进制文件系统ID
    • %n:文件名
    • %s:块大小(用于更快的传输)
    • %S:基本块大小(用于块计数)
    • %t:十六进制文件系统类型
    • %T:文件系统类型,人类可读的形式

    3 实例

    -L:显示链接指向的文件的信息

    root@con01:~# ln -s a1 a2
    root@con01:~# ln a1 a3
    
    root@con01:~# ls
    a1  a2 a3 haproxy-2.8.5  haproxy-2.8.5.tar.gz  lua-5.4.6.tar.gz  snap  test
    
    # 原文件
    root@con01:~# stat a1
      File: a1
      Size: 82              Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 787977      Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-02-02 10:35:40.894002209 +0000
    Modify: 2024-02-02 10:35:38.045956495 +0000
    Change: 2024-02-02 10:35:38.045956495 +0000
     Birth: 2024-02-02 10:35:38.045956495 +0000
    # 对于链接文件,默认显示的是链接文件本身 --》 软链接
    root@con01:~# stat a2
      File: a2 -> a1
      Size: 2               Blocks: 0          IO Block: 4096   symbolic link
    Device: 803h/2051d      Inode: 787982      Links: 1
    Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-02-08 07:40:29.763718140 +0000
    Modify: 2024-02-08 07:40:28.523696058 +0000
    Change: 2024-02-08 07:40:28.523696058 +0000
     Birth: 2024-02-08 07:40:28.523696058 +0000
    
     # 硬链接  
    root@con01:~# stat a3
      File: a3
      Size: 82              Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 787977      Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-02-02 10:35:40.894002209 +0000
    Modify: 2024-02-02 10:35:38.045956495 +0000
    Change: 2024-02-08 08:48:35.164126097 +0000
     Birth: 2024-02-02 10:35:38.045956495 +0000
    
    
    # 使用-L选项  
    root@con01:~# stat -L a2
      File: a2
      Size: 82              Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 787977      Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-02-02 10:35:40.894002209 +0000
    Modify: 2024-02-02 10:35:38.045956495 +0000
    Change: 2024-02-08 08:48:35.164126097 +0000
     Birth: 2024-02-02 10:35:38.045956495 +0000
    root@con01:~# stat -L a1
      File: a1
      Size: 82              Blocks: 8          IO Block: 4096   regular file
    Device: 803h/2051d      Inode: 787977      Links: 2
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2024-02-02 10:35:40.894002209 +0000
    Modify: 2024-02-02 10:35:38.045956495 +0000
    Change: 2024-02-08 08:48:35.164126097 +0000
     Birth: 2024-02-02 10:35:38.045956495 +0000
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    对输出内容的解释:

    • File: a2:文件名
    • Size: 82:文件大小,82字节
    • Blocks: 8:文件系统上为该文件分配了 8 个块。注意,这里的“块”大小可能因文件系统而异,但通常是 4096 字节,可以从IO Block中看出来
    • regular file:文件类型,此处显示是一个普通文件。directory为目录,symbolic link为软连接等
    • Device: 803h/2051d:文件所在的设备的主设备号和次设备号。
    • Inode: 787977:inode号
    • Links: 2:链接数
    • Access: (0644/-rw-r–r–):文件权限
    • Uid: ( 0/ root) :属主的id号和名字
    • Gid: ( 0/ root):属组的id号和名字
    • Access: 2024-02-02 10:35:40.894002209 +0000:上次访问文件的时间,如:打开文件,执行文件
    • Modify: 2024-02-02 10:35:38.045956495 +0000:上次修改文件内容的时间,如:给目录增加内容,修改文件内容
    • Change: 2024-02-08 08:48:35.164126097 +0000:状态改动时间,也就是上次改变文件的元数据(如权限、所有权等)的时间。对于许多文件系统,Change时间与Modify时间有可能相同,但在某些情况下,它们可能会有所不同
    • Birth: 2024-02-02 10:35:38.045956495 +0000:文件的创建时间。但是,请注意,并非所有的文件系统都支持“Birth”时间,并且在某些文件系统或平台上,这个字段可能没有意义或不可用。

    扩展:文件系统中的文件数据分为两类,元数据和数据

    • 元数据:用来描述一个文件的特征的系统数据,诸如访问权限、文件拥有者、以及文件数据块的分布信息等等。
    • 数据:是指普通文件中的实际数据。
    • stat输出的Modify指的是修改文件数据,而Change指的是修改文件的元数据

    -f:显示文件系统信息

    stat -f a1
      File: "a1"
        ID: ff67a29b7db6b99a Namelen: 255     Type: ext2/ext3
    Block size: 4096       Fundamental block size: 4096
    Blocks: Total: 9468520    Free: 7428126    Available: 6939102
    Inodes: Total: 2424832    Free: 2287587
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    参数解释:

    • File: “a1”:文件名
    • ID: ff67a29b7db6b99a:文件系统的唯一标识符(UUID)
    • Namelen: 文件名
    • Type: ext2/ext3:文件系统类型
    • Block size: 4096:块大小
    • Fundamental block size: 4096:基本块大小
    • Blocks: Total: 9468520 Free: 7428126 Available: 6939102
      • Total: 9468520:文件系统中总共的块数
      • Free: 7428126:文件系统中未使用的块数
      • Available: 6939102:在不影响文件系统性能的情况下,可以分配给新文件的块数。
    • Inodes: Total: 2424832 Free: 2287587
      • Total: 2424832:文件系统中总的inodes数
      • Free: 2287587:文件系统中未使用的 inode 数

    -t:以简洁的形式输出

    stat -t a1
    a1 82 8 81a4 0 0 803 787977 1 0 0 1706870140 1706870138 1706870138 1706870138 4096
    # 输出内容如下
    # --terse: %n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
    # --terse --file-system: %n %i %l %t %s %S %b %f %a %c %d
    # 具体每个参数代表什么可以参考说明
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    JavaScript基础语法(类型转换)
    Nginx安装、使用
    java毕业设计演唱会门票订售及管理系统Mybatis+系统+数据库+调试部署
    spark 任务优化
    maven项目如何打包运行指定java程序(maven-shade-plugin插件的使用)
    部署WekaFS并行文件系统的10大理由
    单标签下的日间/黑夜模式切换按钮效果
    百度SEO优化基本原理(掌握SEO基础,提高网站排名)
    宠物行业如何进行软文营销
    基于uniapp框架的古汉语学习考试系统 微信小程序python+java+node.js+php
  • 原文地址:https://blog.csdn.net/dl_11/article/details/136172384