我的 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
}