Linux命令:blkid

blkid 命令

基本介绍

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

资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://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、文件系统类型、卷标等信息,常用于挂载文件系统时引用设备。通过不同的选项组合,可以灵活地获取所需的设备信息,是系统管理员日常工作中常用的工具。

相关推荐
z06.20 分钟前
Linux系统中MySQL的安装
linux·mysql
wzg201625 分钟前
ubuntu通过docker镜像部署安装onlyoffice
linux·ubuntu·docker
Star(up up up)32 分钟前
Docker系列---Docker容器基本命令(新手小白保姆级实操教程)
运维·学习·程序人生·青少年编程·docker·容器·dubbo
echome8881 小时前
Linux 定时任务:crontab 写法与常见失效原因
linux·运维·网络·定时任务·crontab
老约家的可汗1 小时前
Linux开发三件套:make、git、gdb 入门指南
linux·运维·服务器
从琳开始9891 小时前
从Socket到TCP回显服务器:Java网络编程完整指南
java·服务器·网络·tcp/ip·java-ee
云-缩影2 小时前
做微信小程序,自建服务器还是用云托管:技术选型对比
服务器·微信小程序·小程序
分布式存储与RustFS2 小时前
可观测性数据落进对象存储:Proscia 案例拆解与 ClickHouse 自托管配置
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
Sw1zzle2 小时前
Go入门(零):Linux Ubuntu 22.04 安装 Go
linux·ubuntu·golang
device_Any2 小时前
接口文档写着三个字段,接口返回了五个
android·java·linux