如何防止重复绑定挂载?

如何防止重复绑定挂载?

我的 fstab 包含以下内容:

192.168.0.8:/mnt/HD/HD_a2 /media/storage nfs rw,user,auto,hard,intr 0 0
/media/nas/Music /home/benubird/Music none bind,user,auto 0 0

如果我运行mount /media/nas两次,第二次就会失败并显示以下消息:

mount.nfs: /media/nas is busy or already mounted

这是正确的行为。但是,如果我对绑定文件夹调用 mount 两次,它会挂载两次!

如果我运行,也会发生同样的事情mount -a

我如何告诉 fstab 仅挂载该文件夹一次?我不知道两次挂载同一个目录会有什么效果,但我想这可能不太好。

我曾考虑编写一个 shell 脚本来调用以mount -l检查文件夹是否已挂载,然后仅在未挂载时才挂载它,但对我来说,mount 命令竟然没有这个选项,这似乎很奇怪。

因此,具体问题是:

· 为什么 mount 可以检测到非绑定挂载已经安装,但却无法检测到绑定挂载,即使在绑定两次之后它出现了两次mount -l

etc/fstab·如果尚未安装,如何告诉仅安装?

· 如果已经安装,如何告诉 mount 命令不要安装?

(我使用的是 ubuntu 14.04.2 LTS)

答案1

除非您是 init 脚本或其他系统程序,否则您不应该调用 mount -a。为什么需要这个?

但是是的,你可以在 shell 脚本中测试它

mountpoint -q /home/benubird/Music && echo is mounted || echo not mounted

但是它与绑定挂载配合得不是很好,因此你可以改用 grep /proc/mounts:

function is_mounted() {
    dir=$(echo "$1" | sed -e 's/\/\/*/\//g; s/\/$//g;')
    cut -d ' ' -f 2 /proc/mounts  | grep "^$dir$" >/dev/null
}

相关内容