LinuxShell命令stat
1. 简介
众所周知,Linux 下一切皆文件。当我们想要去查看某个文件的具体信息时,可以使用 stat
命令进行查看。
2. 格式
1 | stat filename [filename...] |
以 stat /home
为例,以下为我电脑的输出结果:
- 中文显示
1 | 文件:/home |
- 英文显示
1 | File: /home |
可以看到,stat
命令能够查询到文件的信息有:
字段 | 说明 |
---|---|
File | 文件名 |
Size | 文件大小 |
Blocks | 文件占用的物理磁盘块数目 |
IO Block | 文件系统进行 IO 操作的块大小 |
directory/regular file/symbolic link | 文件类型 |
Device | 设备编号 |
Inode | 文件 Inode 号 |
Links | 当前文件的硬链接数 |
Access | 文件的权限 |
Uid | 文件的 uid,表示文件的所有者 |
Gid | 文件的 gid,表示文件的所有组 |
Access | 文件的最近访问时间 |
Modify | 文件的最近更改时间 |
Change | 文件的最近改动时间 |
Birth | 文件的创建时间 |
2.1 块信息
- Blocks 表示的是文件实际占用的物理磁盘块个数,磁盘块大小固定为 512 字节。
- IO Block 表示文件系统实际进行 IO 操作时,每次读写的块大小。因此 IO Block 因不同的文件系统而异,本人电脑为 ext4,故 IO Block 固定为 4096。
2.2 设备编号
- 文件的设备编号占两个字节,第一个字节为设备主编号,第二个字节为设备从编号。
以上述例子为例,815h
表示十六进制结果,即 0x0815
;2069d
表示十进制结果。0x0815
中,0x08
表示设备主编号,一般取决于设备类型,对于磁盘分区等块设备,一般主编号就是 0x08
;0x15
表示设备从编号,这里就是表示此系统上的第 0x15
个块设备。可以查看 ls -l /dev/block
,按照字母顺序排序,其中第 0x15
个设备便是本系统的磁盘分区。
【注】/dev
目录下除了包含块设备,也还有其他类型的设备,比如 CPU 设备等。
2.3 硬链接数
文件的硬链接数表示访问到该文件的方式数目,普通文件的硬链接数一般为 1,目录文件的硬链接数至少为 2。
- 因为目录下默认包含
.
目录,通过cd .
可以访问到该目录,因此至少为 2。 - 每增加一个子目录,父目录的硬链接数就加 1,因为子目录下可以通过
cd ..
访问父目录。
2.4 文件时间信息
- Access Time:简写为 atime,表示文件的最后访问时间。当文件被访问时,该时间被更新。
- Modify Time:简写为 mtime,表示文件的最后修改时间。当文件的数据内容被修改时,该时间被更新。
- Change Time:简写为 ctime,表示文件的最后更改时间。当文件的属性状态被修改时,该时间被更新。文件的属性状态即其 Inode 中的属性字段,当文件所有者、访问权限、文件内容发生改变时,文件的属性状态都会被更新。
- Birth Time:简写为 btime,表示文件的创建时间。一旦文件创建,该时间就固定不变。
3. 选项
选项 | 说明 |
---|---|
-L 、--dereference |
显示符号链接所指向文件的信息 |
-f 、--file-system |
展示文件系统的状态信息而不是文件的状态信息 |
-c 、--format=FORMAT |
指定格式输出文件的某些状态信息 |
-t 、--terse |
以简洁形式输出文件的状态信息 |
--cached=MODE |
使用属性信息缓存的方式 |
--printf=FORMAT |
类似 --format 选项,结尾无换行符,可以使用转义字符实现换行等操作 |
MODE
取值范围:always
、never
、default
。always
表示如果存在缓存信息则使用缓存信息;never
表示不使用缓存信息,并将最新属性信息同步到缓存;default
表示默认方式,取决于文件系统。FORMAT
选项对于文件和文件系统的取值是不同的:
- 对于文件,
FORMAT
可选选项如下表所示:
文件信息输出格式 说明 %a
八进制格式的文件权限 %A
可读形式的文件权限 %b
文件占用的磁盘块数 %B
磁盘块的字节大小 %C
如果存在,则表示文件的 SELinux 安全上下文 %d
十进制的设备编号 %D
十六进制的设备编号 %f
十六进制表示的 Raw 模式(文件类型 + 文件权限) %F
文件类型 %g
文件所有组 ID %G
文件所有组名称 %h
文件硬链接数 %i
文件 Inode 号 %m
文件所在分区的挂载点 %n
文件名称 %N
符号链接所链接到的文件名称 %o
IO 块的字节大小 %s
文件的实际字节大小 %t
十六进制的主设备类型号 %T
十六进制的从设备类型号 %u
文件所有者 ID %U
文件所有者名称 %w
文件的创建时区 %W
文件的创建时间(自 Epoch 开始的秒数) %x
文件的最后访问时区 %X
文件的最后访问时间(自 Epoch 开始的秒数) %y
文件的最后修改时区 %Y
文件的最后修改时间(自 Epoch 开始的秒数) %z
文件的最后更改时区 %Z
文件的最后更改时间(自 Epoch 开始的秒数) 【注】文件信息的简洁模式等价于输出格式: %n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o
。
- 对于文件系统,
FORMAT
可选选项如下表所示:
文件系统信息输出格式 说明 %a
普通用户可用的空闲块数 %f
文件系统可用的空闲块数 %b
文件系统的全部块数 %c
文件系统的全部文件节点数 %d
文件系统的空闲文件节点数 %i
十六进制表示的文件系统 ID %l
文件名的最大长度 %n
文件名 %s
块大小(用于更快的传输) %S
基本块大小(用于块计数) %t
十六进制表示的文件系统类型 %T
文件系统类型 【注】文件系统信息的简洁模式等价于输出格式: %n %i %l %t %s %S %b %f %a %c %d
。
附录
参考资料:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 お前はどこまで見えている!
评论
WalineTwikoo