Answers:
用途findmnt
:
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/md127p1 ext4 rw,relatime,stripe=256,data=ordered
$ findmnt / -o UUID
UUID
046a554b-d9f5-4b23-82e6-ffaeb98284aa
$ findmnt / -o UUID -n
046a554b-d9f5-4b23-82e6-ffaeb98284aa
它还具有几个选项来控制它如何查找信息以及如何显示信息(包括JSON输出!)。它是mount
软件包的一部分,因此可在任何Ubuntu安装中使用。
您可以使用lsblk
命令输出UUID,但需要分区的设备名称(例如/ dev / sda2)。您可以通过使用df
命令并调整输出来获得此效果。使用命令替换将设备名称指定为lsblk
。似乎您需要sudo来访问UUID,尽管lsblk的常规输出不需要它:
sudo lsblk -n -o UUID "$(df -P / | tail -n1 | cut -d' ' -f1)"
sudo
16.04。
lsblk
或没有blkid
root运行的14.04系统上运行过它,并且运行良好。您知道为什么此命令而不是Rovo发布的版本会出现缓存问题吗?原始输出是否以某种方式规避了缓存?
blkid
以root身份运行,在上创建缓存文件/dev/.blkid.tab
,非sudo的使用lsblk
也不会显示UUID列中的任何内容。我认为没有过时的输出风险。
这是我使用的:
sudo tune2fs -l $(df / | tail -1 |awk '{print $1}') |grep UUID|awk '{ print $3 }'
tune2fs在e2fsprogs软件包中,我不记得它是否默认安装。
sudo apt install e2fsprogs
如果未安装。
awk: not an option: -e
我编辑的答案,以使其起作用。如果我超速了,请随时回滚。干杯! :-)
gawk
。我收到在16.04下指定的错误,它似乎可以mawk
代替使用。
经测试可在14.04和16.04上使用
一个应该始终生成根的UUID的简单的单线/
是
出口DRIVE = $(在'{print $ 1}'上装入| grep'/'| awk -F“); blkid $ DRIVE | 切-d'“'-f2`
我们在这里所做的工作是挂载mount的输出,以使根符号与两侧的空格/
匹配,以避免在/
用作路径扩展符号时匹配,并通过awk
使用“ on”作为字段分隔符进行管道传递,以便仅输出设备名称,并将THAT分配给环境变量$ DRIVE,然后使用blkid $DRIVE
管道传输的cut 的输出(使用)"
作为字段分隔符,并仅选择第二个删除所有内容的字段,仅保留UUID。
请注意,上述命令中的grep后面的内容实际上是' space/ space',而不是出现的'/'。
这样做的好处是不需要sudo
,无论驱动器如何安装,都将返回适当的结果。
在尝试这种方法之前,请确保您没有将$ DRIVE环境变量用于其他任何东西,echo $DRIVE
如果您不使用该变量,它将返回空白行。
/dev/disk/by-label
。...这也适用于未安装的分区。它的优点是能够编写脚本来执行从root到root-bak的rsync之类的事情,这比使用2个不表示任何意思的UUIDS容易出错。