简介
stat命令用来显示文件或文件系统的详细信息
命令格式
stat [OPTION]… FILE…
常用参数
| -L |
支持符号链接 |
| -f |
显示文件系统的信息,而不是有关文件本身的信息 |
| -t |
以简洁的方式输出 |
| -c |
以指定的格式显示文件信息 |
| —printf |
格式化输出的信息,支持换行符和制表符 |
| —help |
显示命令帮助信息 |
| —version |
显示命令版本信息 |
state 输出的含义
| File |
文件名称 |
| Size |
文件的大小(以字节为单位) |
| Blocks |
文件占用的已分配块数 |
| IO Block |
每个块的大小(以字节为单位) |
| File type |
例如常规文件,目录,符号链接… |
| Device |
设备编号(十六进制和十进制) |
| Inode |
索引节点编号 |
| Links |
硬连接数 |
| Access |
数字和符号方法中的文件权限 |
| Uid |
所有者的用户ID和名称 |
| Gid |
群组ID和所有者名称 |
| Context |
SELinux安全上下文 |
| Access |
上次访问文件的时间,当文件内容被访问时,更新这个时间 |
| Modify |
上次修改文件内容的时间,当文件的数据内容被修改时,更新这个时间。 |
| Change |
上次更改文件属性或内容的时间。当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数 |
stat -f 输出的含义
| File |
|
文件名 |
| ID |
|
十六进制文件系统ID |
| Type |
|
文件系统类型 |
| Block size |
|
block 块的大小 |
| Fundamental block size |
|
文件系统上每个块大小 |
| Blocks |
|
块信息 |
|
Total |
文件系统中的总块数 |
|
Free |
文件系统中可用的块数 |
|
Available |
非root用户可用的可用块数 |
| Inodes |
|
inode 节点数 |
|
Total |
文件系统中的总索引节点数 |
|
Free |
文件系统中空闲索引节点的数量 |
自定义输出
stat命令有两个选项,可让您根据需要自定义输出:-c,(-format =”format”)和—printf =”format”。这两个选项的区别在于,
当两个或多个文件用作操作符时,—format在每个操作数的输出之后自动添加换行符。 —printf解释反斜杠转义。—format和—printf可以使用许多文件格式和文件系统的格式指令。
有效的文件格式
| %a |
八进制权限 |
| %A |
用可读性较好的方式输出权限 |
| %b |
计算已分配块数(参见%B) |
| %B |
以字节为单位输出%b 所报告的每个块的大小 |
| %C |
SELinux 安全环境字符串 |
| %d |
十进制设备编号 |
| %D |
十六进制设备编号 |
| %f |
十六进制原始模式 |
| %F |
文件类型 |
| %g |
文件的属组ID |
| %G |
文件的属组组名 |
| %h |
硬链接数量 |
| %i |
Inode 编号 |
| %m |
挂载点 |
| %n |
文件名 |
| %N |
如果对象是一个符号链接,显示引用到的其它文件名 |
| %o |
I/O 块大小 |
| %s |
总计大小,以字节为单位 |
| %t |
十六进制主设备类型 |
| %T |
十六进制子设备类型 |
| %u |
文件的属主ID |
| %U |
文件的属主用户名 |
| %w |
文件创建时间,若未知则显示”-“ |
| %W |
从UNIX 元年起以秒计的文件创建时间,若未知则显示”-“ |
| %x |
上次访问时间 |
| %X |
从UNIX 元年起以秒计的上次访问时间 |
| %y |
上次修改时间 |
| %Y |
从UNIX 元年起以秒计的上次修改时间 |
| %z |
上次更改时间 |
| %Z |
从UNIX 元年起以秒计的上次更改时间 |
有效的文件系统格式
| %a |
非超级用户可用的剩余块数 |
| %b |
文件系统的总数据块数 |
| %c |
文件系统中文件节点总数 |
| %d |
文件系统中空闲文件节点数 |
| %f |
文件系统中空闲块数 |
| %i |
十六进制文件系统ID |
| %I |
允许的文件名最大长度 |
| %n |
文件名 |
| %s |
块大小(用于快速传输) |
| %S |
基本块大小(用于块计数) |
| %t |
十六进制类型描述 |
| %T |
可读性较好的类型描述 |
示例
[root@localhost ~]# man pwd > test.txt[root@localhost ~]# stat test.txt File: ‘test.txt’ Size: 1601 Blocks: 8 IO Block: 4096 regular fileDevice: fd00h/64768d Inode: 68239821 Links: 1Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)Context: unconfined_u:object_r:admin_home_t:s0Access: 2021-03-30 13:23:47.099543369 -0400Modify: 2021-03-30 13:23:47.108543370 -0400Change: 2021-03-30 13:23:47.108543370 -0400 Birth: -[root@localhost ~]# stat -f test.txt File: "test.txt" ID: fd0000000000 Namelen: 255 Type: xfsBlock size: 4096 Fundamental block size: 4096Blocks: Total: 4587008 Free: 4351244 Available: 4351244Inodes: Total: 18358272 Free: 18327015[root@localhost ~]# stat -t test.txttest.txt 1601 8 81a4 0 0 fd00 68239821 1 0 0 1617125027 1617125027 1617125027 0 4096 unconfined_u:object_r:admin_home_t:s0## -L 参数示例[root@localhost ~]# touch a[root@localhost ~]# ln -s a b[root@localhost ~]# lltotal 0-rw-r--r--. 1 root root 0 Mar 30 13:42 alrwxrwxrwx. 1 root root 1 Mar 30 13:42 b -> a## 省略了很多不需要的内容[root@localhost ~]# stat aInode: 68239822[root@localhost ~]# stat b ## 此时查看的是链接文件 b 的信息, 如果想要查看 a 文件, 可以使用 -L 参数Inode: 68239823[root@localhost ~]# stat -L bInode: 68239822## -c ## --printf[root@localhost ~]# stat --printf='Name: %n\nPermissions: %a\n' test.txtName: test.txtPermissions: 644