Jus*_*tin 88 linux bash mount centos
我在用
mount -o bind /some/directory/here /foo/bar
Run Code Online (Sandbox Code Playgroud)
我想/foo/bar
用bash脚本检查一下,看看它是否已经挂载?如果没有,则调用上面的mount命令,否则执行其他操作.我怎样才能做到这一点?
CentOS是操作系统.
Mar*_*bak 168
你没有提到O/S.
Ubuntu Linux 11.10(可能是最新的Linux版本)都有这个mountpoint
命令.
这是我的一台服务器上的示例:
$ mountpoint /oracle
/oracle is a mountpoint
$ mountpoint /bin
/bin is not a mountpoint
Run Code Online (Sandbox Code Playgroud)
实际上,在您的情况下,您应该能够使用该-q
选项,如下所示:
mountpoint -q /foo/bar || mount -o bind /some/directory/here /foo/bar
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
Chr*_*lan 63
mount
不带参数运行命令将告诉您当前的安装.在shell脚本中,您可以grep
使用if语句检查挂载点:
if mount | grep /mnt/md0 > /dev/null; then
echo "yay"
else
echo "nay"
fi
Run Code Online (Sandbox Code Playgroud)
在我的例子中,if语句检查退出代码grep
,表示是否匹配.由于我不希望在匹配时显示输出,因此我将其重定向到/dev/null
.
She*_*ohn 35
手册mountpoint
说它:
检查/ proc/self/mountinfo文件中是否提到了给定的目录或文件.
手册mount
说:
维护列表模式仅用于向后兼容.要获得更强大和可自定义的输出,请使用findmnt(8),尤其是在脚本中.
所以正确使用的命令是findmnt
,它本身就是util-linux
包的一部分,根据手册:
能够在/ etc/fstab,/ etc/mtab或/ proc/self/mountinfo中搜索
所以它实际上搜索的东西比mountpoint
.它还提供了方便的选择:
-M, - mountpoint 路径
明确定义mountpoint文件或目录.另见--target.
总之,要检查目录是否使用bash挂载,您可以使用:
if [[ $(findmnt -M "$FOLDER") ]]; then
echo "Mounted"
else
echo "Not mounted"
fi
Run Code Online (Sandbox Code Playgroud)
例:
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"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
123186 次 |
最近记录: |