绑定挂载不是文件系统类型,也不是挂载文件系统的参数;它们是挂载操作的参数.据我所知,就内核而言,以下命令序列导致基本相同的系统状态:
mount /dev/foo /mnt/one; mount --bind /mnt/one /mnt/two
mount /dev/foo /mnt/two; mount --bind /mnt/two /mnt/one
因此,记住哪些挂载是绑定挂载的唯一方法是保留在/ etc / mtab中的挂载命令的日志.绑定装载操作由绑定装入选项指示(这会导致忽略文件系统类型).但是mount无法仅列出使用一组特定选项安装的文件系统.因此,您需要进行自己的过滤.
mount | grep -E '[,(]bind[,)]'
请注意,/ etc / mtab仅在此处有用,如果它是由mount维护的文本文件.一些发行版将/ etc / mtab设置为/ proc / mounts的符号链接; / proc / mounts大部分等同于/ etc / mtab,但确实有一些差异,其中一个不跟踪绑定挂载.
内核保留但未在/ proc / mounts中显示的一条信息是当挂载点仅显示已挂载文件系统上的目录树的一部分时.在实践中,这主要发生在绑定装载上:
mount --bind /mnt/one/sub /mnt/partial
在/ proc / mounts中,/ mnt / one和/ mnt / partial的条目具有相同的设备,相同的文件系统类型和相同的选项. / mnt / partial仅显示以/ sub为根的文件系统部分的信息在/proc/$pid/mountinfo(第4列)中的每进程安装点信息中可见.那里的条目看起来像这样:
12 34 56:78 / /mnt/one rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered
12 34 56:78 /sub /mnt/partial rw,relatime - ext3 /dev/foo rw,errors=remount-ro,data=ordered