findmnt 是什么
findmnt 属于 util-linux,从 /proc/self/mountinfo 读取当前挂载关系,输出整齐、可以指定列、也能输出 JSON,天生适合脚本。它回答的是「某个目录或设备挂在哪、什么类型、带了哪些挂载选项」,与面向容量的 df、面向操作的 mount 互补;mount 看选项要读带括号的长串,findmnt 直接给列。
基本信息
| 适用平台 | Linux(util-linux 2.20 起,主流发行版默认自带) |
|---|---|
| 命令语法 | findmnt [选项] [设备|挂载点] |
| 常用选项 | -o 指定列 -t 按文件系统类型 -S 按源设备 -M/-T 按目标 -A 展开全部含隐藏挂载 -R 递归 --verify 校验 fstab --json 输出 JSON |
| 常用列 | TARGET SOURCE FSTYPE OPTIONS VFS-OPTIONS FS-OPTIONS PROPAGATE |
| 权限说明 | 读取挂载信息普通用户即可;查看内核私有信息或改动挂载才需要 root |
典型使用场景
- 确认目录的挂载来源:扩容、备份、日志清理前先弄清它到底挂的是哪块盘
- 检查挂载选项:确认是否带 ro、noatime、nosuid,排查「为什么写不进去」
- 改完 fstab 自检:重启前发现字段、设备与选项问题
- 脚本取数:--json 或指定列拿到结构化结果,避免解析 mount 的括号文本
- 发现叠加挂载:同一路径被挂多次时用 -A 展开真实层次
常用示例
常用示例
findmnt # 全部挂载,树状输出
findmnt /data # 查某个挂载点
findmnt -o TARGET,SOURCE,FSTYPE,OPTIONS /data # 只输出关心的列
findmnt -t ext4 # 只看某类型文件系统
findmnt -S /dev/sdb1 # 按源设备反查挂载点
findmnt --verify -F /etc/fstab # 校验 fstab 书写与设备可用性
findmnt -A /data # 展开被隐藏的叠加挂载
findmnt --json -o TARGET,SOURCE,FSTYPE # 结构化输出,便于脚本处理常用列读法
| 列 | 含义 | 正常与异常 |
|---|---|---|
| TARGET | 挂载点路径 | 看不到预期目录说明没挂上,或挂在了别处 |
| SOURCE | 来源设备或网络路径 | /dev/sdb1 为本地盘,NFS/CIFS 形如 host:/path |
| FSTYPE | 文件系统类型 | ext4、xfs 为本地;nfs4、cifs 为网络;overlay 常见于容器 |
| OPTIONS | 挂载选项合并视图 | 出现 ro 就写不进去;noatime 属于正常优化 |
| VFS-OPTIONS 与 FS-OPTIONS | 内核通用选项与文件系统专有选项 | 用于判断某个异常选项来自哪一层 |
| PROPAGATE | 挂载传播属性 | shared、slave 决定容器与命名空间之间是否相互可见 |
findmnt --verify 能在重启前发现 fstab 的字段、设备与选项问题,是改完 fstab 的推荐自检步骤;它只做语法与设备可用性检查,挂载点目录权限、远端网络可达性等运行时问题发现不了。
同名路径被叠加挂载(overmount)时,findmnt 默认只显示最上层,很容易误判成「我挂对了」;用 findmnt -A 或直接看 /proc/self/mountinfo 才知道真实层次。容器里看到的挂载表是命名空间内视角,与宿主机并不相同。