mount
有一个--make-shared
如上所述的选项这里。但是,如何查明特定挂载点是否已共享?
答案1
Linux 在/proc/mounts
.这共享选项太新了,无法显示在该文件中,但它们确实显示在/proc/self/mountinfo
1 中。该文件的文档位于filesystems/proc.txt
在内核文档中。该文件是由生成的show_mountinfo
在fs/namespace.c
。示例行如下所示:
42 18 98:0 / /mount_point rw shared:1 - ext3 /dev/sda1 rw,errors=continue
^^^^^^^^
前 6 个字段的格式是固定的。然后是零个或多个标记字段,例如shared:GROUP
、master:GROUP
或propagate_from:GROUP
,unbindable
指示挂载在对等组中的角色(如果有)。介绍-
了文件系统特定的部分,始终由文件系统类型名称、设备名称和文件系统特定的安装选项组成。
因此:
</proc/self/mountinfo awk -vmount_point='/mount/point' '
$5 == mount_point {
i = 7;
while ($i != "-") {if ($i ~ /^shared:/) exit 0; ++i}
exit 1;
}'
¹在最近的 Linux 内核上,每个进程都有自己的文件系统命名空间,并且/proc/mounts
是到/proc/self/mounts
.