if [[ $(findmnt -M "$FOLDER") ]]; then
echo "Mounted"
else
echo "Not mounted"
fi
示例:
mkdir -p /tmp/foo/{a,b}
cd /tmp/foo
sudo mount -o bind a b
touch a/file
ls b/ # should show file
rm -f b/file
ls a/ # should show nothing
[[ $(findmnt -M b) ]] && echo "Mounted"
sudo umount b
[[ $(findmnt -M b) ]] || echo "Unmounted"
awk -v status=1 '$2 == "/opt" {status=0} END {exit status}' /proc/mounts
# and you can use it in and if like so:
if awk -v status=1 '$2 == "/opt" {status=0} END {exit status}' /proc/mounts; then
echo "yes"
else
echo "no"
fi
8条答案
按热度按时间lsmepo6l1#
你都没提过操作系统。
Ubuntu Linux 11.10(可能是最新版本的Linux)有
mountpoint
命令。下面是我的一台服务器上的一个示例:
实际上,在您的示例中,应该能够使用
-q
选项,如下所示:mo49yndu2#
运行不带参数的
mount
命令会告诉你当前的挂载点。在shell脚本中,你可以使用grep
和一个if语句来检查挂载点:在我的示例中,if语句检查
grep
的退出代码,该代码指示是否存在匹配项,由于我不希望在存在匹配项时显示输出,所以我将其重定向到/dev/null
。pqwbnv8z3#
mountpoint
的手册上说:检查/proc/self/mountinfo文件中是否提到给定的目录或文件。
mount
的手册上说:列表模式只是为了向后兼容而保留的。要获得更健壮和可定制的输出,请使用findmnt(8),尤其是在脚本中。
因此,正确的命令是
findmnt
,它本身是util-linux
包的一部分,根据手册:可以在/etc/fstab、/etc/mtab或/proc/self/mountinfo中进行搜索
所以它实际上比
mountpoint
搜索更多的东西,它还提供了方便的选项:显式定义挂载点文件或目录。另请参见--target。
总之,要检查目录是否使用bash挂载,可以使用:
示例:
lmvvr0a84#
我的解决方案:
示例:
对于Mark J. Bobak's answer,如果在不同的文件系统中使用
bind
选项装载,则mountpoint
不起作用。对于Christopher Neylan's answer,不需要将grep的输出重定向到/dev/null,只需使用
grep -q
即可。最重要的是,使用
readlink -f $mypath
规范化路径:/path/to/dir/
等路径,则/proc/mounts
或mount
输出中的路径为/path/to/dir
/var/run/
是/run/
的符号链接,所以如果你为/var/run/mypath
挂载bind并检查它是否挂载,它将在/proc/mounts
中显示为/run/mypath
。628mspwn5#
我喜欢使用
/proc/mounts
的答案,但我不喜欢做简单的grep。那会给予你假阳性。你真正想知道的是“是否有任何行有字段号2的这个字符串”。所以,问这个问题。(在这个例子中我检查/opt
)pqwbnv8z6#
这里的答案太复杂了,只需使用以下命令检查挂载是否存在:
第一个月
这只输出最后一个挂载的文件夹,如果你想看到所有的文件夹,只需删除tail命令。
v09wglhw7#
另一个干净的解决方案是这样的:
当然,“echo something”可以用您需要为每个案例做的任何事情来代替。
j9per5c48#
在我的.bashrc中,我创建了以下别名: