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符号链接所链接到的文件名称 %oIO 块的字节大小 %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








