Linux:获取当前启动盘的设备名称

Linux:获取当前启动盘的设备名称

通过 USB 启动机器时,

sudo fdisk -l

输出两个标有星号的设备,您永远不会知道哪个是启动设备。

我需要当前机器上所有磁盘的列表

sed -ne 's/.*\([sh]d[a-zA-Z]\+$\)/\/dev\/\1/p' /proc/partitions 

是一个很好的方法,它输出

/dev/sda
/dev/sdb

这确实给了我一个线索,即哪个是启动设备,这很重要,因为想要从一个设备启动并安全删除另一个设备 - 自动(插入、启动、让它运行......)因为我同时在一组机器上执行此操作,确保客户计算机硬盘上没有残留任何数据。

awk '$2 == "/"' /proc/self/mounts 

这会为您提供 UUID 号码 - 但如何找到/dev/sd?它的归属?

(关于“使用 UUID”的提示没有帮助 - 我不想重新配置系统,我想清理它。当然,我可以在执行此操作时分配新的 UUID,这需要一秒钟,但这绝对不是目标,并且仍然忽略了我不知道/dev/sd?要给哪个设备一个新的事实。)

dban完成了工作,但将来将不能免费使用。

答案1

您的调用几乎已经完成awk。只需进行一些小调整即可。

awk '$1 ~ /^\/dev\// && $2 == "/" { print $1 }' /proc/self/mounts

$1 ~ /^\/dev\//部分要求任何令人满意的行都在 /dev 下的某个位置命名设备。现在我们需要的是从设备 UUID 名称到内核分配的名称的映射,这很容易,因为列出的所有名称要么直接是该名称,要么(最终)是指向该名称的符号链接,因此我们可以像ls -l这样感觉它们:

ls -l $(awk '$1 ~ /^\/dev\// && $2 == "/" { print $1 }' /proc/self/mounts)

这将为您提供一行输出,告诉您根文件系统当前是从哪个物理设备挂载的。它并不是万无一失的,所以我不会仅凭这一点就自动执行任何可能造成破坏的操作,但对于只是想要知道指向哪个设备的人来说,这应该足够了。

答案2

您应该找到您的/安装位置。

findmnt -n / | awk '{ print $2 }'

假设您得到的结果是/dev/sda1。使用它来查找父设备:

lsblk -no pkname /dev/sda1

这样你应该可以得到。如果需要,sda你可以在前面加上。/dev/

不知道这有多万无一失。但这可能比回答。

相关内容