Bash:找到某个分区所在的磁盘并将结果放入变量中
Posted
技术标签:
【中文标题】Bash:找到某个分区所在的磁盘并将结果放入变量中【英文标题】:Bash: Find the disk a certain partition is on and put result into a variable 【发布时间】:2021-01-17 03:26:25 【问题描述】:有哪些(可靠的)测试可以找到某个分区所在的磁盘并将结果放入变量中?
例如lsblk
的输出:
...
sda 8:0 0 9.1T 0 disk
└─sda1 8:1 0 9.1T 0 part /foopath
...
mmcblk0 179:0 0 29.7G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /barpath
└─mmcblk0p2 179:2 0 29.5G 0 part /foobarpath
如果partition="/dev/mmcblk0p2"
,我如何将mmcblk0
作为它所在的磁盘放入变量中?或者类似地,如果partition="/dev/sda1"
,如何将sda
作为它所在的磁盘放入变量中?
disk=$partition::-1
似乎是一个 hack,直到我遇到了诸如mmcblk0p1
这样的分区,因此请求更可靠的测试......
隔离磁盘并使用变量的目的是将其传递给smartctl -n standby /dev/sda
以查找磁盘当前是否正在旋转等
运行环境为 Linux Mint 19.3 和 Ubuntu 20。
有什么想法吗?
【问题讨论】:
那么提取最后一个/
和第一个数字之间的部分字符串?
我相信 OP 希望根据磁盘名称提取字符串,例如:mmcblk0
和 sda
...
是的,我不确定模式匹配是否可行,因为磁盘名称似乎可以改变结构?不过我不确定。找到驱动器的“根”名称是我所追求的(如上面的lsblk
输出)。希望这有助于清除它!
is to pass it to smartctl
只是通过/dev/sda1
,它会自己挑选光盘。 @edit 好的,所以似乎取决于光盘,据我所知适用于我的分区。
这里是答案:unix.stackexchange.com/questions/226420/…
【参考方案1】:
感谢@KamilCuk 和@don_crissti ;)
使用lsblk
“仅打印父设备”
#!/bin/bash
partition="/dev/sda1"
disk="$(lsblk -no pkname "$partition")"
【讨论】:
以上是关于Bash:找到某个分区所在的磁盘并将结果放入变量中的主要内容,如果未能解决你的问题,请参考以下文章
bash 脚本在变量中使用剪切命令并将结果存储在另一个变量中