blkid是唯一能直接、可靠读取分区uuid的命令,它不依赖挂载或udev缓存,直接解析文件系统superblock获取真实值,支持ext4/xfs/btrfs/vfat/swap等类型;查单个分区用sudo blkid /dev/nvme0n1p2,提取纯uuid用sudo blkid /dev/sdb1 -s uuid -o value,无输出则说明未格式化。

blkid 是唯一能直接、可靠读取分区 UUID 的命令,其他方法要么受限、要么只是间接映射。
PyCharm 2026.2.0.1 Linux版提供 JetBrains 官方 2026.2.0.1 版本安装包,适合需要指定 PyCharm 版本进行 Python 项目开发、运行和调试的用户。
用 blkid 查指定分区的 UUID(最常用)
它不依赖挂载、不依赖 udev 缓存,直接解析文件系统 superblock,结果就是真实值。blkid 对 ext4/xfs/btrfs/vfat/swap 全支持,普通用户常可直接运行,只有 LVM 或加密设备可能需要 sudo。
- 查单个分区:
sudo blkid /dev/nvme0n1p2,输出形如 /dev/nvme0n1p2: UUID="a1b2c3d4-..." TYPE="ext4"
- 只要纯 UUID 字符串(适合脚本):
sudo blkid /dev/sdb1 -s UUID -o value,输出就是 a1b2c3d4-...,无引号无空格
- 如果没输出,不是命令错了,而是该设备没文件系统(比如刚分完区还没
mkfs),可用 file -s /dev/sdb1 验证是否返回 data
用 /dev/disk/by-uuid/ 反查设备路径(已知 UUID 时)
这个目录不是“查询工具”,而是 udev 维护的符号链接索引表。它不能告诉你 UUID 是否有效,只能告诉你“当前内核认为这个 UUID 指向哪个设备”。
- 列出所有映射:
ls -l /dev/disk/by-uuid/,看到类似 abcd1234-... -> ../../sdc2
- 验证某 UUID 是否对应预期设备:
readlink -f /dev/disk/by-uuid/abcd1234-...
- 注意:刚用
tune2fs -U 改过 UUID,这里可能延迟更新;热插拔后也可能有几秒滞后;链接存在 ≠ 设备可读
别用 tune2fs 或 dumpe2fs 查非 ext 分区
这两个命令只认 ext2/3/4,对 xfs、btrfs、vfat 等会直接报错或静默失败。
-
tune2fs -l /dev/sda1 | grep UUID:仅当 file -s /dev/sda1 显示 ext 类型才安全
- 报错
tune2fs: Bad magic number in super-block 就立刻停手,换 blkid
-
dumpe2fs 输出冗长且格式不稳定,人工核对都费劲,完全不适合脚本提取
为什么 lsblk -f 有时 UUID 为空?lsblk 的数据源是 sysfs + udev,不是直接读 superblock。它在以下情况会漏掉 UUID:
- 分区未挂载且没有 LABEL,udev 可能没触发完整识别
- 设备刚插入,udev 规则还没跑完(等几秒再试)
- LVM 或多路径设备在复杂拓扑下,
lsblk 解析逻辑可能跳过部分字段
- swap 分区在
lsblk -f 中通常不显示 UUID,但 blkid 会列出
sudo blkid /dev/nvme0n1p2,输出形如 /dev/nvme0n1p2: UUID="a1b2c3d4-..." TYPE="ext4"
sudo blkid /dev/sdb1 -s UUID -o value,输出就是 a1b2c3d4-...,无引号无空格mkfs),可用 file -s /dev/sdb1 验证是否返回 data
/dev/disk/by-uuid/ 反查设备路径(已知 UUID 时)
这个目录不是“查询工具”,而是 udev 维护的符号链接索引表。它不能告诉你 UUID 是否有效,只能告诉你“当前内核认为这个 UUID 指向哪个设备”。
- 列出所有映射:
ls -l /dev/disk/by-uuid/,看到类似abcd1234-... -> ../../sdc2 - 验证某 UUID 是否对应预期设备:
readlink -f /dev/disk/by-uuid/abcd1234-... - 注意:刚用
tune2fs -U改过 UUID,这里可能延迟更新;热插拔后也可能有几秒滞后;链接存在 ≠ 设备可读
别用 tune2fs 或 dumpe2fs 查非 ext 分区
这两个命令只认 ext2/3/4,对 xfs、btrfs、vfat 等会直接报错或静默失败。
-
tune2fs -l /dev/sda1 | grep UUID:仅当 file -s /dev/sda1 显示 ext 类型才安全
- 报错
tune2fs: Bad magic number in super-block 就立刻停手,换 blkid
-
dumpe2fs 输出冗长且格式不稳定,人工核对都费劲,完全不适合脚本提取
为什么 lsblk -f 有时 UUID 为空?lsblk 的数据源是 sysfs + udev,不是直接读 superblock。它在以下情况会漏掉 UUID:
- 分区未挂载且没有 LABEL,udev 可能没触发完整识别
- 设备刚插入,udev 规则还没跑完(等几秒再试)
- LVM 或多路径设备在复杂拓扑下,
lsblk 解析逻辑可能跳过部分字段
- swap 分区在
lsblk -f 中通常不显示 UUID,但 blkid 会列出
tune2fs -l /dev/sda1 | grep UUID:仅当 file -s /dev/sda1 显示 ext 类型才安全tune2fs: Bad magic number in super-block 就立刻停手,换 blkid
dumpe2fs 输出冗长且格式不稳定,人工核对都费劲,完全不适合脚本提取lsblk -f 有时 UUID 为空?lsblk 的数据源是 sysfs + udev,不是直接读 superblock。它在以下情况会漏掉 UUID:
- 分区未挂载且没有 LABEL,udev 可能没触发完整识别
- 设备刚插入,udev 规则还没跑完(等几秒再试)
- LVM 或多路径设备在复杂拓扑下,
lsblk解析逻辑可能跳过部分字段 - swap 分区在
lsblk -f中通常不显示 UUID,但blkid会列出
真正要确认一个分区有没有 UUID、UUID 是多少,只信 blkid 的输出。其他命令都是辅助验证或特定场景下的快捷替代,不能替代它。










