Hau*_*ing 10 linux mount proc sysfs block-device
我想知道确定(没有 root 权限)是否安装了块设备(例如sdb
)或其任何部分(以及它的哪一部分)的最简单方法是什么。
检查/proc/mounts
sdb 是不够的,因为sdb
LVM 可能使用它的分区之一。您可以检查,/sys/block/sdb/sdb*/holders/
但您会得到dm-x
必须解析为/dev/mapper
名称才能检查的条目/proc/mounts
。可能,但如果有更简单的解决方案......(应该不需要 root 权限)
tyl*_*erl 14
这基本上是检查一整袋边角箱的问题。
mount /dev/sda -o offset=1M /foo
)(使用 Lostup -a)这些只是我想出的例子,给了我一分半的时间来思考。我敢肯定还有十几个。
我认为最后一个例子是最有趣的,而且很少有人知道。它允许您在不使用分区的情况下挂载文件系统。只需指定起始偏移量,Linux 就会透明地创建一个环回设备。上面的例子产生以下结果:
# cat /proc/mounts
...
/dev/loop0 /foo ext4 relatime,data=ordered 0 0
# losetup -a
/dev/loop0 [0005]:2048 (/dev/sda), offset 1048576
Run Code Online (Sandbox Code Playgroud)
为什么要这么做?通常情况下,它涉及以前出现严重错误的情况。
还要记住,现在主线中的命名空间功能(请参阅unshare),不同的进程可以对已挂载和未挂载的内容有不同的看法。事情开始变得有点红。