blkid 命令 #
blkid
命令用于查找和打印块设备的属性信息,如 UUID、文件系统类型、卷标等。它是一个用于识别和查询块设备特性的实用工具。
语法 #
blkid [选项] [设备...]
主要选项 #
选项 | 说明 |
---|---|
-c 文件 |
指定缓存文件(默认为 /etc/blkid.tab) |
-g |
强制进行垃圾收集(丢弃缓存) |
-h |
显示帮助信息 |
-i |
显示 I/O 限制 |
-k |
列出已知的文件系统类型 |
-l |
查找指定的标签、UUID 或设备名 |
-L 标签 |
查找具有指定标签的设备 |
-o 格式 |
指定输出格式(full、value、device、list、udev、export) |
-p |
低级探测(绕过缓存) |
-s 标签 |
仅显示指定标签的值 |
-t 名称=值 |
按指定的标签和值过滤设备 |
-U UUID |
查找具有指定 UUID 的设备 |
-v |
详细模式 |
常见用法 #
1. 显示所有块设备的信息 #
blkid
输出示例:
/dev/sda1: UUID="1234-5678" TYPE="vfat" PARTUUID="abcdef12-01"
/dev/sda2: UUID="abcdef12-3456-7890-abcd-ef1234567890" TYPE="ext4" PARTUUID="abcdef12-02"
/dev/sda3: UUID="fedcba98-7654-3210-fedc-ba9876543210" TYPE="LVM2_member" PARTUUID="abcdef12-03"
/dev/mapper/vg-root: UUID="12345678-90ab-cdef-1234-567890abcdef" TYPE="ext4"
/dev/mapper/vg-swap: UUID="abcdef12-3456-7890-abcd-ef1234567890" TYPE="swap"
/dev/sdb1: LABEL="DATA" UUID="fedcba98-7654-3210-fedc-ba9876543210" TYPE="ext4" PARTUUID="12345678-01"
2. 显示特定设备的信息 #
blkid /dev/sda1
输出示例:
/dev/sda1: UUID="1234-5678" TYPE="vfat" PARTUUID="abcdef12-01"
3. 查找具有特定 UUID 的设备 #
blkid -U "abcdef12-3456-7890-abcd-ef1234567890"
输出示例:
/dev/sda2
4. 查找具有特定标签的设备 #
blkid -L "DATA"
输出示例:
/dev/sdb1
5. 仅显示设备的 UUID #
blkid -s UUID /dev/sda1
输出示例:
/dev/sda1: UUID="1234-5678"
6. 仅显示设备的文件系统类型 #
blkid -s TYPE /dev/sda1
输出示例:
/dev/sda1: TYPE="vfat"
7. 使用特定输出格式 #
blkid -o list
输出示例:
device fs_type label mount point UUID
/dev/sda1 vfat /boot/efi 1234-5678
/dev/sda2 ext4 /boot abcdef12-3456-7890-abcd-ef1234567890
/dev/sda3 LVM2_member fedcba98-7654-3210-fedc-ba9876543210
/dev/sdb1 ext4 DATA /data fedcba98-7654-3210-fedc-ba9876543210
8. 导出格式(适合脚本使用) #
blkid -o export /dev/sda1
输出示例:
DEVNAME=/dev/sda1
UUID=1234-5678
TYPE=vfat
PARTUUID=abcdef12-01
9. 按文件系统类型过滤设备 #
blkid -t TYPE=ext4
输出示例:
/dev/sda2: UUID="abcdef12-3456-7890-abcd-ef1234567890" TYPE="ext4" PARTUUID="abcdef12-02"
/dev/mapper/vg-root: UUID="12345678-90ab-cdef-1234-567890abcdef" TYPE="ext4"
/dev/sdb1: LABEL="DATA" UUID="fedcba98-7654-3210-fedc-ba9876543210" TYPE="ext4" PARTUUID="12345678-01"
10. 低级探测设备 #
blkid -p /dev/sda1
在脚本中使用 blkid #
1. 获取设备的 UUID #
UUID=$(blkid -s UUID -o value /dev/sda1)
echo "设备 /dev/sda1 的 UUID 是: $UUID"
2. 获取设备的文件系统类型 #
FS_TYPE=$(blkid -s TYPE -o value /dev/sda1)
echo "设备 /dev/sda1 的文件系统类型是: $FS_TYPE"
3. 检查设备是否已格式化 #
if blkid /dev/sdb1 > /dev/null 2>&1; then
echo "设备 /dev/sdb1 已格式化"
else
echo "设备 /dev/sdb1 未格式化"
fi
与 /etc/fstab 结合使用 #
blkid
命令常用于获取设备的 UUID,以便在 /etc/fstab
文件中使用 UUID 挂载设备:
# 获取设备的 UUID
UUID=$(blkid -s UUID -o value /dev/sdb1)
# 将条目添加到 /etc/fstab
echo "UUID=$UUID /mnt/data ext4 defaults 0 2" >> /etc/fstab
注意事项 #
blkid
命令通常需要 root 权限才能获取完整信息- 命令默认使用缓存,使用
-p
选项可以绕过缓存进行低级探测 - 在脚本中使用
blkid
时,建议使用-o value
选项获取纯值输出 - 使用 UUID 或标签挂载设备比使用设备名更可靠,因为设备名可能在重启后改变
blkid
命令是util-linux
包的一部分,在大多数 Linux 发行版中默认安装