如何测试给定的挂载点是否正确挂载?

如何测试给定的挂载点是否正确挂载?

如果发生以下任一情况,使用/etc/mtab/proc/mountsmount或中的任何一项都可能给您提供不正确的信息:mountpoint

  • 远程处于离线状态(grep基于文件的解决方案失败)
  • 对于 NFS 挂载,远程已停止导出或 NFS 服务已停止(mountpoint失败)
  • 远程已更改 IP 地址(所有解决方案均失败)

如何才能简单地找到是/否答案,以确定挂载是否可按预期使用?据我所知,所有挂载信息都存储在和/etc/mtab/proc/mounts。在不导致挂起(确实如此stat)的情况下,有没有办法验证网络的实际状态是否如本地信息所显示的一样?

这需要是一个非常通用的工具,能够处理 CIFS 和 NFS 挂载(以及最有可能的其他挂载)。

约束

我只能使用 RHEL 6 上标准发行版附带的软件。通常,里面的一切/bin:/sbin:/usr/bin:/usr/sbin都很好。这不是自愿的,也不是可移动的点,所以我不能接受使用外部工具的答案。不过,为了未来的读者,我欢迎他们以评论的形式:)

参考

答案1

恐怕这是不可能的。

确定 NFS(或者更一般地说,任何网络)设备是否可用的尝试使用它这可能会导致阻塞(并且需要相当长的时间)。

此外,“不可用”并不是永久的。如果远程恢复在线,安装将再次可用。

答案2

在 Ubuntu 上,我已经从 创建了挂载点root,但它们被挂载到不同的用户,因此检查所有权可以让我了解它们是否已被挂载。

我的所有坐骑都已安装/media,因此以下脚本显示哪些已安装:

ls -ld /media/* |                      \
  while read x x usr grp x x x x name; \
  do if [ $usr == root ];              \
     then echo $name not mounted;      \
     else echo $name mounted;          \
     fi;                               \
  done

如果您需要以 root 身份挂载,也许您可​​以使用不同的组并进行检查。

请注意,这将检查之前的挂载是否成功。如果已挂载的设备或网络共享随后未卸载就关闭,则对它的访问仍将挂起。

相关内容