通过询问内核知道“mount -o bind”是哪个目录(Linux)

通过询问内核知道“mount -o bind”是哪个目录(Linux)

如果我这样做,我就可以看到里面mount -o bind /my/dir /mnt/tmp的内容。但是,如果我输入,我会得到以下输出:/my/dir/mnt/tempcat /proc/mounts

/dev/sda7 /my ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0
/dev/sda7 /mnt/tmp ext4 rw,relatime,user_xattr,barrier=1,data=ordered 0 0

正如您所看到的,我知道这sda7是底层设备,但我不知道该文件系统中的哪个目录是“挂载绑定”的/mnt/temp

我怎么知道不输入mount它不依赖于内核而是依赖于/etc/mtab我想从内核本身获取信息。

编辑:如果该解决方案也适用于绑定的目录,那就太好了在安装时/etc/fstab这种行:/my/dir /mnt/temp none bind 0 0

答案1

您可以从以下位置获取此信息/proc/self/mountinfo

# mkdir -p /my/dir
# mkdir /mnt/temp
# mount -o bind /my/dir /mnt/temp
# grep temp /proc/self/mountinfo 
26 22 202:1 /my/dir /mnt/temp rw,noatime - ext3 /dev/xvda1 rw,errors=continue,user_xattr,acl,barrier=0,data=ordered

这是在内核中实现此功能的补丁:https://lkml.org/lkml/2008/1/29/136

您还可以使用以下findmnt命令:

# findmnt /mnt/temp
TARGET    SOURCE              FSTYPE OPTIONS
/mnt/temp /dev/xvda1[/my/dir] ext3   rw,noatime,errors=continue,user_xattr,acl,barrier=0,data=ordered

编辑:我还验证了此方法在通过安装时有效/etc/fstab

# tail -1 /etc/fstab 
/my/dir  /mnt/temp  none  bind  0 0

相关内容