5 个针对 Linux 新手的 'stat' 命令示例
stat 命令是查看文件或文件系统状态的实用工具。它可以检索诸如文件类型、八进制和人类可读的访问权限、SELinux 安全上下文字符串、文件诞生时间、上次访问、上次数据修改、上次状态更改(以人类可读和自纪元以来的秒数表示)等信息。
它有一个选项可以指定自定义格式(而不是默认格式)来显示信息。在本指南中,我们将为 Linux 新手介绍五个 stat 命令示例。
检查Linux文件状态
1.使用stat 的最简单方法是为其提供一个文件作为参数。以下命令将显示文件 /var/log/syslog 的大小、块、IO 块、文件类型、inode 值、链接数以及更多信息,如屏幕截图所示:
$ stat /var/log/syslog File: '/var/log/syslog' Size: 26572 Blocks: 56 IO Block: 4096 regular file Device: 80ah/2058d Inode: 8129076 Links: 1 Access: (0640/-rw-r-----) Uid: ( 104/ syslog) Gid: ( 4/ adm) Access: 2018-04-06 09:42:10.987615337 +0530 Modify: 2018-04-06 11:09:29.756650149 +0530 Change: 2018-04-06 11:09:29.756650149 +0530 Birth: -
检查文件系统状态
2.在上面的例子中,stat 命令将输入文件视为普通文件,但是,要显示文件系统状态而不是文件状态,请使用该-f
选项。
$ stat -f /var/log/syslog File: "/var/log/syslog" ID: ce97e63d2201c974 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 84769790 Free: 16012830 Available: 11700997 Inodes: Total: 21544960 Free: 20995459
您还可以提供目录/文件系统作为参数,如图所示。
$ stat -f / File: "/" ID: ce97e63d2201c974 Namelen: 255 Type: ext2/ext3 Block size: 4096 Fundamental block size: 4096 Blocks: Total: 84769790 Free: 16056471 Available: 11744638 Inodes: Total: 21544960 Free: 21005263
启用符号链接跟踪
3.由于 Linux 支持链接(符号链接和硬链接),某些文件可能有一个或多个链接,甚至可能存在于文件系统中。
要启用 stat 来跟踪链接,请使用-L
如图所示的标志。
$ stat -L / File: '/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 80ah/2058d Inode: 2 Links: 25 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2018-04-09 10:55:55.119150525 +0530 Modify: 2018-02-20 11:15:54.462893167 +0530 Change: 2018-02-20 11:15:54.462893167 +0530 Birth: -
使用自定义格式显示信息
4. stat还允许您使用特定或自定义格式来代替默认格式。标志-c
用于指定使用的格式,每次使用格式序列后都会打印一个换行符。
或者,您可以使用--printf
启用反斜杠转义序列解释并关闭打印尾随换行符的选项。\n
例如,您需要在格式中使用来打印换行符。
# stat --printf='%U\n%G\n%C\n%z\n' /var/log/secure
上述示例中使用的文件格式序列的含义:
- %U – 所有者的用户名
- %G – 所有者的组名
- %C – SELinux 安全上下文字符串
- %z – 上次状态改变的时间,人类可读
5.这是一个展示文件系统接受的格式序列的使用示例。
$ stat --printf='%n\n%a\n%b\n' /
上述命令中使用的格式序列的含义。
- %n – 显示文件名
- %a – 打印非超级用户可用的空闲块
- %b – 输出文件系统中的总数据块
以简洁的形式打印信息
6.该-t
选项可用于以简洁的形式打印信息。
$ stat -t /var/log/syslog /var/log/syslog 12760 32 81a0 104 4 80a 8129076 1 0 0 1523251873 1523256421 1523256421 0 4096
最后需要注意的是,您的 shell 可能有自己的 stat 版本,请参阅您的 shell 文档以了解其支持的选项的详细信息。要查看所有可接受的输出格式序列,请参阅 stat 手册页。
$ man stat
在本文中,我们为 Linux 新手解释了五个 stat 命令示例。使用下面的反馈表来提出任何问题。