Linux blkid命令介绍
blkid命令是block identifier的缩写,它可以用来识别和打印块设备的属性,比如UUID(通用唯一标识符)、TYPE(文件系统类型)或LABEL(卷标)。blkid命令可以用来查找匹配特定属性的设备,也可以用来显示一个或多个设备的所有属性。blkid命令是基于libblkid库的命令行工具,它可以根据设备的内容元数据来确定其类型和属性。
Linux blkid命令适用的Linux版本
blkid命令可以在大多数Linux发行版中使用,包括Red Hat Enterprise Linux、Ubuntu、Debian、CentOS等。如果你的系统没有安装blkid命令,你可以使用以下命令来安装:
- 对于基于RPM的发行版(如Red Hat Enterprise Linux、CentOS),你可以使用yum或dnf命令来安装util-linux包,它包含了blkid命令:
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux
或者
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux
- 对于基于Debian的发行版(如Ubuntu、Debian),你可以使用apt或apt-get命令来安装util-linux包,它也包含了blkid命令:
[linux@bashcommandnotfound.cn ~]$ sudo apt install util-linux
或者
[linux@bashcommandnotfound.cn ~]$ sudo apt-get install util-linux
Linux blkid命令的基本语法
blkid命令的基本语法格式如下:
blkid [选项] [设备名]
你可以使用blkid命令来显示系统中所有块设备的属性,也可以指定一个或多个设备名来显示特定设备的属性。你还可以使用一些选项来控制blkid命令的输出格式、内容和缓存文件。
Linux blkid命令的常用选项或参数说明
blkid命令有很多选项或参数,可以用来改变它的行为和输出。下面是一些常用的选项或参数的说明:
选项或参数 | 说明 |
---|---|
-c cachefile | 从指定的缓存文件中读取设备信息,而不是从默认的缓存文件/etc/blkid/blkid.tab中读取。如果你想从一个空的缓存开始,可以指定/dev/null。 |
-g | 对缓存文件进行垃圾回收,删除不存在的设备信息。 |
-h | 显示帮助信息并退出。 |
-i | 显示I/O限制(也称为I/O拓扑)信息,这些信息描述了设备的物理布局和性能特征。这个选项会自动启用'export'输出格式。 |
-l | 查找匹配使用-t选项指定的属性的一个设备。如果有多个设备匹配,那么返回优先级最高的设备,或者在同一优先级下返回第一个找到的设备。设备类型的优先级顺序是:Device Mapper、EVMS、LVM、MD和普通块设备。如果不使用这个选项,blkid命令会打印所有匹配的设备。 |
-L label | 查找使用指定卷标的一个设备(等同于-l -o device -t LABEL=)。这个查找方法可以可靠地使用/dev/disk/by-label udev符号链接(取决于/etc/blkid.conf中的设置)。避免直接使用符号链接,因为它们不太可靠。-L选项可以在有无udev的系统中使用。 |
-o format | 使用指定的格式来显示blkid命令的输出。支持的格式有:value、device、export、full和list。 |
-p | 使用低级别的探测模式,而不是使用缓存模式。这个选项会忽略所有缓存文件,并直接读取设备的内容。 |
-s tag | 只显示指定的属性(标签),而不是显示所有属性。可以使用多个-s选项来显示多个属性。 |
-t NAME=value | 查找匹配指定的属性(NAME=value对)的设备。可以使用多个-t选项来指定多个属性。 |
-u list | 限制探测功能到定义的(逗号分隔的)使用类型列表。支持的使用类型有:filesystem、raid、crypto和other。列表可以用'no'前缀来指定要忽略的使用类型。例如:blkid -p -u filesystem,other /dev/sda1会探测所有文件系统和其他(比如交换分区)格式,而blkid -p -u noraid /dev/sda1会探测所有支持的格式,除了RAID。这个选项只能和-p选项一起使用。 |
-U uuid | 查找使用指定UUID的一个设备。更多细节请参考-L选项。 |
Linux blkid命令的实例
下面是一些使用blkid命令的实例,你可以根据自己的需要来尝试和修改。
显示所有块设备的属性
[linux@bashcommandnotfound.cn ~]$ blkid
/dev/sda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
/dev/sda2: UUID="7IvYzk-TnnK-oPjf-ipdD-cofz-DXaJ-gPdgBW" TYPE="LVM2_member"
/dev/mapper/vg_kvm-lv_root: UUID="a07b967c-71a0-4925-ab02-aebcad2ae824" TYPE="ext4"
/dev/mapper/vg_kvm-lv_swap: UUID="d7ef54ca-9c41-4de4-ac1b-4193b0c1ddb6" TYPE="swap"
显示指定设备的属性
[linux@bashcommandnotfound.cn ~]$ blkid /dev/sda1
/dev/sda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
显示指定设备的详细信息(需要root权限)
[linux@bashcommandnotfound.cn ~]$ sudo blkid -po udev /dev/sda1
ID_FS_UUID=7fa9c421-0054-4555-b0ca-b470a97a3d84
ID_FS_UUID_ENC=7fa9c421-0054-4555-b0ca-b470a97a3d84
ID_FS_VERSION=1.0
ID_FS_TYPE=ext4
ID_FS_USAGE=filesystem
查找使用指定UUID的设备
[linux@bashcommandnotfound.cn ~]$ blkid -U 7fa9c421-0054-4555-b0ca-b470a97a3d84
/dev/sda1
查找使用指定卷标的设备
[linux@bashcommandnotfound.cn ~]$ blkid -L boot
/dev/sda1
只显示设备的UUID和文件系统类型
[linux@bashcommandnotfound.cn ~]$ blkid -s UUID -s TYPE
/dev/sda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
/dev/sda2: UUID="7IvYzk-TnnK-oP
...
以'export'格式显示设备的属性
这种格式可以用来在shell脚本中设置变量
[linux@bashcommandnotfound.cn ~]$ blkid -o export /dev/sda1
UUID=7fa9c421-0054-4555-b0ca-b470a97a3d84
TYPE=ext4
以'list'格式显示设备的属性
这种格式可以用来在表格中显示设备的信息:
[linux@bashcommandnotfound.cn ~]$ blkid -o list /dev/sda1
device fs_type label mount point UUID
-------------------------------------------------------------------------------
/dev/sda1 ext4 /boot 7fa9c421-0054-4555-b0ca-b470a97a3d84
从空的缓存开始,使用低级别的探测模式,显示设备的I/O限制信息
[linux@bashcommandnotfound.cn ~]$ sudo blkid -c /dev/null -p -i /dev/sda1
/dev/sda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
MINIMUM_IO_SIZE="512" PHYSICAL_SECTOR_SIZE="512" LOGICAL_SECTOR_SIZE="512" ALIGNMENT_OFFSET="0" PART_ENTRY_SCHEME="dos" PART_ENTRY_TYPE="0x83" PART_ENTRY_NUMBER="1" PART_ENTRY_OFFSET="2048" PART_ENTRY_SIZE="2097152" PART_ENTRY_DISK="8:0"
查找使用ext4文件系统类型的设备
[linux@bashcommandnotfound.cn ~]$ blkid -t TYPE=ext4
/dev/sda1: UUID="7fa9c421-0054-4555-b0ca-b470a97a3d84" TYPE="ext4"
/dev/mapper/vg_kvm-lv_root: UUID="a07b967c-71a0-4925-ab02-aebcad2ae824" TYPE="ext4"
查找使用swap分区的设备,并只显示设备名
[linux@bashcommandnotfound.cn ~]$ blkid -t TYPE=swap -o device
/dev/mapper/vg_kvm-lv_swap
显示设备的卷标和UUID
如果你只想显示设备的卷标和UUID,你可以使用-s选项来指定这两个属性,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -s LABEL -s UUID
/dev/sda1: UUID="187171ab-c9b8-43ec-b0bb-77c736ca22e0" LABEL="/home"
/dev/sdb1: UUID="6e0acfe3-81ed-4f9f-8ab5-0d65ba1f0ef2"
/dev/sdc1: UUID="aa82d7bb-ab2b-4739-935f-fd8a5c9a6cb0"
/dev/sdb3: UUID="2a294b33-eb61-40a3-b3fc-ad6eaf7f156f"
/dev/mapper/vg_kvm-lv_root: UUID="a07b967c-71a0-4925-ab02-aebcad2ae824"
/dev/mapper/vg_kvm-lv_swap: UUID="d7ef54ca-9c41-4de4-ac1b-4193b0c1ddb6"
以值的格式显示设备的属性
如果你只想显示设备的属性的值,而不显示属性的名称,你可以使用-o value选项来指定输出格式,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -o value /dev/sda1
187171ab-c9b8-43ec-b0bb-77c736ca22e0
ext4
/home
从指定的缓存文件中读取设备信息
如果你想从一个自定义的缓存文件中读取设备信息,而不是从默认的缓存文件/etc/blkid/blkid.tab中读取,你可以使用-c选项来指定缓存文件的路径,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -c /tmp/mycache
/dev/sda1: UUID="187171ab-c9b8-43ec-b0bb-77c736ca22e0" TYPE="ext4" LABEL="/home"
/dev/sda2: UUID="1a225baa-7027-4619-aaa5-900e24c1fdff" TYPE="swap"
/dev/sdb1: UUID="6e0acfe3-81ed-4f9f-8ab5-0d65ba1f0ef2" TYPE="ext2"
/dev/sdc1: UUID="aa82d7bb-ab2b-4739-935f-fd8a5c9a6cb0" TYPE="ext2"
/dev/sdb3: UUID="2a294b33-eb61-40a3-b3fc-ad6eaf7f156f" TYPE="ext2"
/dev/mapper/vg_kvm-lv_root: UUID="a07b967c-71a0-4925-ab02-aebcad2ae824" TYPE="ext4"
/dev/mapper/vg_kvm-lv_swap: UUID="d7ef54ca-9c41-4de4-ac1b-4193b0c1ddb6" TYPE="swap"
使用低级别的探测模式显示设备信息
如果你想使用低级别的探测模式来显示设备信息,而不是使用缓存模式,你可以使用-p选项来启用这个模式,如下所示:
[linux@bashcommandnotfound.cn ~]$ sudo blkid -p /dev/sda1
/dev/sda1: UUID="187171ab-c9b8-43ec-b0bb-77c736ca22e0" VERSION="1.0" TYPE="ext4" USAGE="filesystem"
请注意,这个选项需要root权限,否则会显示'Permission denied'错误。
查找使用指定属性的设备
如果你想查找使用指定属性的设备,你可以使用-t选项来指定属性的名称和值,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -t LABEL=/home
/dev/sda1: UUID="187171ab-c9b8-43ec-b0bb-77c736ca22e0" TYPE="ext4" LABEL="/home"
你可以使用多个-t选项来指定多个属性,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -t TYPE=ext2 -t UUID=6e0acfe3-81ed-4f9f-8ab5-0d65ba1f0ef2
/dev/sdb1: UUID="6e0acfe3-81ed-4f9f-8ab5-0d65ba1f0ef2" TYPE="ext2"
如果你想查找使用指定卷标或UUID的设备,你也可以使用-L或-U选项来简化查找,如下所示:
[linux@bashcommandnotfound.cn ~]$ blkid -L /home
/dev/sda1
[linux@bashcommandnotfound.cn ~]$ blkid -U 6e0acfe3-81ed-4f9f-8ab5-0d65ba1f0ef2
/dev/sdb1
Linux blkid命令的注意事项
使用blkid命令时,你需要注意以下几点:
- blkid命令默认会使用缓存文件来显示设备信息,这样可以提高速度,但也可能导致信息不准确或过时。你可以使用-g选项来清理缓存文件,或者使用-p选项来使用低级别的探测模式,直接读取设备的内容。
- blkid命令需要有读取设备的权限,否则会显示'Permission denied'错误。你可以使用sudo命令来提升权限,或者将自己加入到disk组中,以便访问块设备。
- blkid命令只能识别和显示已知的文件系统类型和属性,如果设备使用了不支持的格式,那么blkid命令可能无法正确显示或者显示为空。
- 如果你的系统没有安装blkid命令,你可能会看到'bash: blkid: command not found'错误。你可以使用yum、dnf、apt或apt-get命令来安装util-linux包,它包含了blkid命令。
评论区