stat命令最直接完整,原样读取inode真实字段,含权限、所有者、三类时间戳、inode号、硬链接数等;-f查文件系统级inode总量与剩余量,-l显示软链接目标属性。

用 stat 命令最直接、最完整。它不依赖推算,而是从磁盘 inode 中原样读取真实字段,包括权限、所有者、三类时间戳、inode 号、硬链接数等。
看懂默认输出里的关键字段
运行 stat filename 会显示多行信息,重点注意:
-
Access / Modify / Change 时间:Access 是最后读取内容的时间(受
noatime影响);Modify 是内容修改时间(最反映数据是否变);Change 是元数据变更时间(如 chmod、chown、重命名) -
Links:硬链接数。若为 0,说明文件已被
rm删除,但仍有进程在使用(常见于日志轮转后未释放) - Inode:文件在文件系统内的唯一编号,同一 inode 的多个硬链接共享权限和时间戳
-
Uid/Gid:所有者和所属组的用户名与 ID,
-n选项可强制显示数字 ID
用 -c 定制结构化输出
默认格式不适合脚本处理。用 -c 指定字段顺序和格式,例如:
-
stat -c "%n %a %U:%G %y" /etc/hosts→ 输出:文件名、八进制权限、所有者:组、Modify 时间(ISO 格式) -
stat -c "%i %h %s" /var/log/syslog→ 输出 inode 号、硬链接数、字节大小,便于识别“已删未释放”文件 - 批量查看:
stat -c "%n %y %s" *.log或配合find:find /var/log -name "*.log" -print0 | xargs -0 stat -c "%n %y"
查文件系统级信息或符号链接目标
stat 的 -f 和 -L 参数用途明确,不能混用:
-
stat -f /查根文件系统的 inode 总量、已用/可用数,比df -i更底层,适合排查“Permission denied”却权限看似正常的情况 -
stat -L /path/to/symlink显示软链接指向的目标文件的真实属性;不加-L则只显示链接文件本身的 inode 和权限
注意“创建时间”为什么总是 -
执行 stat -c "%w" file 若输出 -,不是命令问题,而是文件系统限制:ext4 默认不存储 birth time;XFS 需显式启用且挂载时带 inode64 等选项。这不是 bug,是设计如此。











