如果发生以下任一情况,使用/etc/mtab
、/proc/mounts
、mount
或中的任何一项都可能给您提供不正确的信息: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 身份挂载,也许您可以使用不同的组并进行检查。
请注意,这将检查之前的挂载是否成功。如果已挂载的设备或网络共享随后未卸载就关闭,则对它的访问仍将挂起。