blkid命令

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 发行版中默认安装