AutoFS - 在继续或退出之前检查挂载是否处于活动状态的 Bash 脚本

AutoFS - 在继续或退出之前检查挂载是否处于活动状态的 Bash 脚本

这是特定于 autofs 挂载的。

我发现了多种检查传统挂载的方法,其中一些使用 /proc/mounts 文件。即使当前无法访问挂载,我也可以看到我的挂载仍在该文件中。即它曾是可以访问,但现在设备已关闭或处于睡眠状态。

这些只是我尝试过的一些方法,这些方法似乎都适用于我的 fstab 挂载,但不适用于我的 autofs 挂载 - 他们根本看不到 autofs 挂载当前不可用。使用 mount 或 findmnt 等命令似乎挂起,我用 CTRL+C 杀死它们。

如何通过脚本检查文件系统是否已挂载

https://stackoverflow.com/questions/9422461/check-if-directory-mounted-with-bash

https://serverfault.com/questions/50585/whats-the-best-way-to-check-if-a-volume-is-mounted-in-a-bash-script

最终目标是在继续执行脚本或适当退出之前编写一个检查脚本以查看其是否处于活动状态。

这是来自始终认为其可用的 URL 之一的示例,因为挂载位于 /proc/mounts 中,即使在设备关闭后也是如此:

if grep -qs '/mnt/Backups' /proc/mounts; then
  echo "Destination reachable. Continuing..."
else
    echo "Destination unreachable. Exiting."
    exit 1
fi
echo "test done"

URL 中的另一个(更好?)示例是使用 findmnt。但这也不完全有效,例如

if findmnt /mnt/Backups; then
  echo "Destination reachable. Continuing..."
else
    echo "Destination unreachable. Exiting."
    exit 1
fi
echo "test done"

Findmnt 挂起:[更新:我刚刚做了一些更多的测试,这次没有挂起 - 相反,它报告为 grep 方法 - 它认为在我让服务器进入睡眠状态后挂载仍然存在。但今天早些时候,它冻结了]

  • 如果分享曾是已安装,但现在还没有(例如,服务器在我的桌面连接到服务器后的某个时间关闭)。

作品:

  • 如果共享已安装 - findmnt 没有问题(找到安装)。
  • 如果自从我启动桌面后尚未安装共享(正确地找不到安装)。

我找到了 RedHat 参考资料。也许我需要定义一个更可靠的来源?我被困住了。

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-sysinfo-filesystems-findmnt

谢谢。

更新:我也尝试过检查目录:

https://stackoverflow.com/questions/59838/check-if-a-directory-exists-in-a-shell-script

我查找了一个我知道桌面上不存在的目录(smeghead),它按应有的方式响应 - “目的地无法访问。正在退出”。

if [ -d "/home/Derek/Desktop/smeghead/" ];  then
    echo "Destination reachable. Continuing..."
else
    echo "Destination unreachable. Exiting."
    exit 1
fi

但是,如果我将路径更改为 /mnt/Backups(当备份因 autofs 而消失时),则命令将冻结,我必须按 CTRL+C。

所以看来问题是某物关于 autofs 和/或 /mnt 位置搞砸了?

答案1

正如中提到的ubuntu.con 上的 Autofs 页面

自动挂载仅在访问时挂载,并在一段时间不活动后卸载

因此,第一步(在具有有效的 autofs 配置之后!-)是访问所需的挂载点

我用挂载点像这样:

# try to change directory (or ls) to auto-mount if not yet mounted
cd /mnt/Backups/ > /dev/null 2>&1
# check if mounted:
if mountpoint -q /mnt/Backups/; then
    echo "Destination reachable. Continuing..."
else
    echo "Destination unreachable. Exiting."
fi

你可以替换光盘LS(或者也许更好的解决方案?)如果你想留在当前目录

相关内容