当 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 检查目录是不是存在挂起的主要内容,如果未能解决你的问题,请参考以下文章