我正在 CentOS 上运行一个容器:
docker run -it centos bash
我首先检查其标签或 UUID:
[root@3271c071fe0a /]# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-5.3.0-1032-aws root=LABEL=cloudimg-rootfs ro console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295
然后我尝试使用标签(cloudimg-rootfs
)并将其转换为设备名称,因此我使用了blkid
但它不打印任何内容:
[root@3271c071fe0a /]# blkid -L="cloudimg-rootfs"
[root@3271c071fe0a /]#
我期待得到,/dev/xvda1
因为我检查过lsblk
:
[root@3271c071fe0a /]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop1 7:1 0 96.6M 1 loop
loop2 7:2 0 28.1M 1 loop
loop3 7:3 0 97.1M 1 loop
xvda 202:0 0 8G 0 disk
`-xvda1 202:1 0 8G 0 part /etc/hosts
答案1
您不应该用于blkid
此任务,因为它不可靠。如果你检查man blkid
“描述”部分,你会发现这段话(强调我的):
建议使用 lsblk(8) 命令获取有关块设备的信息,或使用 lsblk --fs 获取文件系统的概述,或使用 findmnt(8) 搜索已安装的文件系统。
lsblk(8) 提供更多信息,更好地控制输出格式,易于在脚本中使用,并且不需要 root 权限即可获取实际信息。 blkid 直接从设备读取信息,对于非 root 用户,它返回缓存的未经验证的信息。 blkid 主要是为系统服务和测试 libblkid 功能而设计的。