blkid最直接查看所有设备uuid,只扫描已启用设备;findmnt -d筛选已挂载设备uuid更可靠;/proc/mounts与lsblk联合使用兼容性最强。

用 blkid 查看所有设备的 UUID(最直接)
blkid 是专为识别块设备属性设计的命令,输出包含 UUID、FSTYPE、TYPE 等关键字段,且默认只扫描已启用的设备(如已分区、有文件系统元数据的块设备)。
- 直接运行
blkid即可列出所有能识别 UUID 的设备,包括未挂载但有文件系统的分区 - 加
-o value可只输出 UUID 值(每行一个),适合脚本提取 - 若某些设备显示
UUID=""或无输出,说明该设备尚未格式化,或文件系统损坏/不被识别(如 exFAT 未安装exfat-utils) - 注意:它不区分“是否已挂载”,只管“有没有 UUID”;要过滤出已挂载的,需结合其他命令
用 findmnt -D 筛出已挂载设备的 UUID
findmnt 关注挂载状态,-D 选项会强制显示底层设备的详细信息(含 UUID),比单纯查 /proc/mounts 更可靠。
- 运行
findmnt -D,输出列中若有UUID=...字段,说明该挂载点对应设备具备有效 UUID - 若某挂载项的
source列显示的是设备路径(如/dev/sda1),但findmnt -D没给出 UUID,常见原因是该设备使用了无 UUID 的文件系统(如早期 ext2、vfat 默认不写 UUID) - 可加
-t ext4,xfs,btrfs限定文件系统类型,避免混入网络或伪文件系统(如tmpfs、proc) - 不推荐依赖
findmnt --uuid:它只显示挂载选项里的UUID=...,而很多 fstab 条目用的是UUID=...,但运行时内核实际挂载的是设备节点,两者可能不一致
从 /proc/mounts 和 lsblk 联合推导(兼容性最强)
有些老旧系统或容器环境里 blkid 或 findmnt 不可用,此时可组合基础命令还原映射关系:
-
cat /proc/mounts | awk '{print $1,$2,$3}'提取设备、挂载点、文件系统类型(注意:$1 可能是 UUID=xxx 形式,也可能是 /dev/xxx) -
lsblk -o NAME,FSTYPE,UUID,MOUNTPOINT一次性列出设备树、文件系统类型、UUID 和当前挂载位置;若 UUID 列为空,说明该分区未生成或未写入 UUID - 若
/proc/mounts中设备列为UUID=xxx,可直接提取该值;若为/dev/sdb2,则需用lsblk查同名设备的 UUID 字段 - 注意:
lsblk的 UUID 来自 udev 数据库,重启后可能延迟更新;刚格式化完的分区需执行udevadm trigger或等待几秒才能在lsblk中显示 UUID
UUID 不是挂载行为的产物,而是文件系统创建时写入超级块的标识。只要文件系统没被重新格式化,UUID 就不变;但挂载参数(如 noatime)或挂载点变更不会影响它。真正容易混淆的是:看到某个挂载点有 UUID,并不意味着它一定通过 UUID 方式挂载(fstab 里可能写的还是 /dev/sda1)。











