当 NFS 挂载失败时,bash 检查目录是不是存在挂起

Posted

技术标签:

【中文标题】当 NFS 挂载失败时,bash 检查目录是不是存在挂起【英文标题】:bash checking directory existence hanging when NFS mount goes down当 NFS 挂载失败时,bash 检查目录是否存在挂起 【发布时间】:2012-02-06 12:06:38 【问题描述】:

我有一个 .bash_profile 脚本,它根据目录存在为我设置一些别名:

if [ -d  /home/user/games ] ; then
  alias cdgames='cd /home/user/games'
fi

其中一个目录位于 NFS 挂载上 - 如果文件管理器变得无响应,su - user 将挂在 .bash_profile 中的这一行。

如果目录挂载到无响应的文件管理器,是否有任何方法可以检查 bash 中目录的存在而不会导致挂起?

【问题讨论】:

只是一个想法:也许你可以每次都创建一个别名,别名会检查目录:`alias cdgames='if grep /home/user/games /etc/mtab;然后 cd /home/user/games ; else echo "目录未更改:未安装";菲 【参考方案1】:

由于文件夹应该在 /etc/mtab 中显示为挂载设备,您可以尝试这样的操作

if grep -q '/home/user/games' /etc/mtab ; then 
    alias cdgames='cd /home/user/games'
fi

这种方法有点粗鲁,但适用于大多数情况。

【讨论】:

太棒了 - 我将代码替换为:if grep '/home/user/games' /etc/mtab 1>/dev/null; then alias cdgames='cd /home/user/games' elif [ -d '/home/user/games ] ; then alias cdgames = 'cd /home/user/games' fi 干燥:if grep '/home/user/games' /etc/mtab 1>/dev/null || [ -d '/home/user/games' ] ; then alias cdgames = 'cd /home/user/games' fi 我编辑我的答案以添加 -q 参数。它避免打印结果,以及它的清洁管道到 /dev/null

以上是关于当 NFS 挂载失败时,bash 检查目录是不是存在挂起的主要内容,如果未能解决你的问题,请参考以下文章

检查 NFS 共享是不是安装在 python 脚本中

检查目录是不是用 bash 挂载

nfs-utils bug导致nfs挂载失败

linux挂载aixnfs没有写权限

如何判断(在 sh 中)一个目录是不是挂载在 NFS 上

Linux系统之使用autofs自动挂载nfs共享