Linux Shell脚本:如何检测NFS挂载点(或服务器)已经死了?

Linux Shell脚本:如何检测NFS挂载点(或服务器)已经死了?,第1张

概述通常在NFS客户端上,如何通过使用 Bash Shell脚本检测服务器端的Mounted-Point或DEAD? 通常我这样做: if ls '/var/data' 2>&1 | grep 'Stale file handle';then echo "failing";else echo "ok";fi 但问题是,当特别是NFS服务器完全死机或停止时,甚至ls命令,进入该目录, 通常在NFS客户端上,如何通过使用 Bash Shell脚本来检测服务器端的Mounted-Point或DEAD?

通常我这样做:

if ls '/var/data' 2>&1 | grep 'Stale file handle';then   echo "failing";else   echo "ok";fi

但问题是,当特别是NFS服务器完全死机或停止时,甚至ls命令,进入该目录,在客户端被绞死或死亡.意思是,上面的脚本不再可用.

有没有办法再次检测到这个?

解决方法 “stat”命令是一种更清洁的方式:
statresult=`stat /my/mountpoint 2>&1 | grep -i "stale"`if [ "${statresult}" != "" ]; then  #result not empty: mountpoint is stale; remove it  umount -f /my/mountpointfi

此外,您可以使用rpcinfo来检测远程nfs共享是否可用:

rpcinfo -t remote.system.net nfs > /dev/null 2>&1if [ $? -eq 0 ]; then  echo Remote NFS share available.fi

新增2013-07-15T14:31:18-05:00:

我进一步研究了这个问题,因为我还在研究需要识别过时挂载点的脚本.受到one of the replies的启发,“有没有一种很好的方法可以检测过时的NFS挂载”,我认为以下可能是检查bash中特定挂载点陈旧性的最可靠方法:

read -t1 < <(stat -t "/my/mountpoint")if [ $? -eq 1 ]; then   echo NFS mount stale. Removing...    umount -f -l /my/mountpointfi

如果stat命令由于某种原因挂起,则“read -t1”构造可靠地超出子shell.

新增2013-07-17T12:03:23-05:00:

虽然读-t1< <(stat -t“/ my / mountpoint”)工作,当mountpoint过时时,似乎没有办法将其错误输出静音.添加> / dev / null 2>& 1在子shell中,或在命令行的末尾打破它.使用简单的测试:if [-d / path / to / mountpoint];然后… fi也可以工作,并且在脚本中可能更好.经过大量测试后,我最终使用了它.

新增2013-07-19T13:51:27-05:00:

对我的问题“How can I use read timeouts with stat?”的回复提供了关于当目标不可用时将stat(或rpcinfo)的输出静音的额外细节,并且命令在它自己超时之前挂起几分钟.虽然[-d / some / mountpoint]可用于检测陈旧的挂载点,但rpcinfo没有类似的替代方法,因此使用read -t1重定向是最佳选择.子shell的输出可以用2>& – 静音.以下是CodeMonkey’s response的示例:

mountpoint="/my/mountpoint"read -t1 < <(stat -t "$mountpoint" 2>&-)if [[ -n "$REPLY" ]]; then  echo "NFS mount stale. Removing..."  umount -f -l "$mountpoint"fi

也许现在这个问题得到了充分的回答:).

总结

以上是内存溢出为你收集整理的Linux Shell脚本:如何检测NFS挂载点(或服务器)已经死了?全部内容,希望文章能够帮你解决Linux Shell脚本:如何检测NFS挂载点(或服务器)已经死了?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1046103.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存