Linux命令:blkid

blkid 命令

基本介绍

blkid 是 Linux 系统中用于查询和显示块设备属性信息的工具。它可以获取设备的 UUID(通用唯一标识符)、文件系统类型、卷标等信息,常用于挂载文件系统时引用设备。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://pan.quark.cn/s/d0fb20abd19a

语法

复制代码
blkid [OPTIONS] [DEVICE]

常用选项

基本选项

  • -c, --cachefile=FILE:指定缓存文件
  • -d, --no-encoding:不编码非打印字符
  • -g, --garbage-collect:清理缓存中的无效条目
  • -h, --help:显示帮助信息
  • -k, --list-filesystems:列出支持的文件系统类型
  • -o, --output=FORMAT:指定输出格式
  • -s, --match-tag=TAG:只显示指定标签的信息
  • -t, --match-token=TOKEN:按指定条件过滤设备
  • -U, --uuid=UUID:按 UUID 查找设备
  • -L, --label=LABEL:按卷标查找设备
  • -V, --version:显示版本信息

输出格式

  • full:完整格式(默认)
  • value:仅显示值
  • list:列表格式
  • export:环境变量格式

使用示例

1. 显示所有块设备信息

bash 复制代码
blkid

输出示例:

复制代码
/dev/sda1: UUID="1234-ABCD" TYPE="vfat" PARTUUID="12345678-01"
/dev/sda2: UUID="12345678-1234-5678-1234-567812345678" TYPE="swap" PARTUUID="12345678-02"
/dev/sda3: UUID="12345678-1234-5678-1234-567812345678" TYPE="ext4" PARTUUID="12345678-03"

2. 显示指定设备信息

bash 复制代码
blkid /dev/sda1
blkid /dev/sda3

3. 仅显示 UUID

bash 复制代码
blkid -s UUID
blkid -s UUID /dev/sda3

输出示例:

复制代码
/dev/sda3: UUID="12345678-1234-5678-1234-567812345678"

4. 仅显示文件系统类型

bash 复制代码
blkid -s TYPE

5. 按 UUID 查找设备

bash 复制代码
blkid -U 12345678-1234-5678-1234-567812345678

输出示例:

复制代码
/dev/sda3

6. 按卷标查找设备

bash 复制代码
blkid -L MYVOLUME

7. 以值格式输出

bash 复制代码
blkid -o value -s UUID /dev/sda3

输出示例:

复制代码
12345678-1234-5678-1234-567812345678

8. 以环境变量格式输出

bash 复制代码
blkid -o export /dev/sda3

输出示例:

复制代码
DEVNAME=/dev/sda3
UUID=12345678-1234-5678-1234-567812345678
TYPE=ext4
PARTUUID=12345678-03

9. 列出支持的文件系统类型

bash 复制代码
blkid -k

输出示例:

复制代码
btrfs
ext2
ext3
ext4
vfat
swap
...

10. 按条件过滤设备

bash 复制代码
blkid -t TYPE=ext4
blkid -t LABEL=MYVOLUME

输出格式说明

默认输出格式

复制代码
/dev/sda1: UUID="1234-ABCD" TYPE="vfat" PARTUUID="12345678-01"
字段 说明
DEVNAME 设备路径
UUID 通用唯一标识符
TYPE 文件系统类型
LABEL 卷标
PARTUUID 分区 UUID
PARTLABEL 分区标签

常见文件系统类型

类型 说明
ext2/ext3/ext4 Linux 扩展文件系统
vfat FAT32 文件系统
ntfs NTFS 文件系统
swap 交换空间
btrfs Btrfs 文件系统
xfs XFS 文件系统
lvm2_member LVM 物理卷

实用技巧

获取所有 UUID

bash 复制代码
blkid | grep -o 'UUID="[^"]*"' | sed 's/UUID="//;s/"$//'

获取指定类型的设备

bash 复制代码
blkid -t TYPE=ext4 -o list

脚本中获取 UUID

bash 复制代码
#!/bin/bash

# 获取根分区 UUID
ROOT_UUID=$(blkid -o value -s UUID /dev/sda3)
echo "Root partition UUID: $ROOT_UUID"

# 获取所有 ext4 分区
echo "Ext4 partitions:"
blkid -t TYPE=ext4 | while read line; do
    dev=$(echo "$line" | cut -d: -f1)
    uuid=$(echo "$line" | grep -o 'UUID="[^"]*"' | sed 's/UUID="//;s/"$//')
    echo "$dev -> $uuid"
done

检查设备是否存在

bash 复制代码
if blkid /dev/sda3 &>/dev/null; then
    echo "Device exists"
else
    echo "Device not found"
fi

更新 fstab 使用 UUID

bash 复制代码
# 获取 UUID
UUID=$(blkid -o value -s UUID /dev/sda3)

# 添加到 fstab
echo "UUID=$UUID /mnt/data ext4 defaults 0 2" >> /etc/fstab

相关命令

  • lsblk:列出块设备信息
  • fdisk:磁盘分区工具
  • parted:磁盘分区工具
  • mount:挂载文件系统
  • umount:卸载文件系统
  • tune2fs:调整 ext2/ext3/ext4 文件系统参数
  • e2label:设置 ext2/ext3/ext4 文件系统卷标

注意事项

  1. 权限要求:通常需要 root 权限才能访问所有设备信息
  2. 缓存机制blkid 使用缓存文件 /etc/blkid.tab 提高性能
  3. 更新缓存 :使用 -g 选项清理无效缓存条目
  4. 设备路径 :设备通常位于 /dev 目录下
  5. UUID 格式:UUID 是 128 位数字,通常表示为 32 个十六进制字符
  6. 卷标限制:不同文件系统对卷标长度有限制

总结

blkid 是 Linux 系统中查询块设备属性的重要工具。它可以获取设备的 UUID、文件系统类型、卷标等信息,常用于挂载文件系统时引用设备。通过不同的选项组合,可以灵活地获取所需的设备信息,是系统管理员日常工作中常用的工具。

相关推荐
AlfredZhao1 天前
生产环境里,为什么不建议把普通端口直接暴露到公网?
linux·https·443·80
戴为沐3 天前
Linux内存扩容指南
linux
zylyehuo3 天前
Linux 彻底且安全地删除文件
linux
用户805533698034 天前
主线 U-Boot 上 RK3506:和闭源 rkbin 拔河的三个隐性契约
linux·嵌入式
用户034095297914 天前
linux fcitx 5 雾凇拼音 设置在中文输入法下仍然输入英文标点
linux
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
Web3探索者5 天前
可视化服务器管理和传统命令行区别是什么?新手教程:Linux 运维到底该用图形界面还是 SSH 命令行?
linux·ssh
zylyehuo5 天前
Linux系统中网线与USB网络共享冲突
linux
荣--5 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维