有什么简单的方法可以查看挂载点是否已共享?

有什么简单的方法可以查看挂载点是否已共享?

mount有一个--make-shared如上所述的选项这里。但是,如何查明特定挂载点是否已共享?

答案1

Linux 在/proc/mounts.这共享选项太新了,无法显示在该文件中,但它们确实显示在/proc/self/mountinfo1 中。该文件的文档位于filesystems/proc.txt在内核文档中。该文件是由生成的show_mountinfofs/namespace.c。示例行如下所示:

42 18 98:0 / /mount_point rw shared:1 - ext3 /dev/sda1 rw,errors=continue
                             ^^^^^^^^

前 6 个字段的格式是固定的。然后是零个或多个标记字段,例如shared:GROUPmaster:GROUPpropagate_from:GROUPunbindable指示挂载在对等组中的角色(如果有)。介绍-了文件系统特定的部分,始终由文件系统类型名称、设备名称和文件系统特定的安装选项组成。

因此:

</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.

相关内容