免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 9774 | 回复: 12
打印 上一主题 下一主题

难题,在shell脚本里如何判断mount有效? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-14 21:22 |只看该作者 |倒序浏览
A,B两台机器,A 提供NFS将目录/var/www/html给B机器使用,B上利用rsync做了文件同步,我希望在A上硬盘或别的什么原因导致mount失效时,在B上编写SHELL脚本,自动检测mount的有效性,如果mount无效,执行失效操作.我原以为-r /var/www/html/somefilename 即可,可实际测试发现如果mount失效,这个判断语句就死掉了,总在那里等待,看来这种办法不行,诸位,可有别的办法?
我的语句:
#!/bin/bash

STATUS=/var/run/ha.sta
DATE=`/bin/date '+%Y.%m.%d %H:%M:%S'`
HTTPCFGSLAVE="/etc/httpd/conf/httpd.conf.slave"
HTTPCFGMASTER="/etc/httpd/conf/httpd.conf.master"
HTTPCFG="/etc/httpd/conf/httpd.conf"

. ${STATUS}
. /etc/init.d/functions

if [ -r /var/www/html/main/index.jsp ] ; then

        if      [ ${state = "MASTER"}] ;     then

                cp -f $HTTPCFGMASTER $HTTPCFG
                service httpd restart
                echo "state=SLAVE">${STATUS}

                string=`echo $DATE`"    "`echo $HOSTNAME`"       is SLAVE!"
                echo $string

                exit 0
        fi

elif
        [ ${state = "SLAVE"}];  then

                cp -f $HTTPCFGSLAVE $HTTPCFG
                service httpd restart
                echo "state=MASTER">${STATUS}

                string=`echo $DATE`"    "`echo $HOSTNAME`"       is MASTER!"
                echo $string

                echo 0

fi

论坛徽章:
0
2 [报告]
发表于 2007-06-14 22:31 |只看该作者
$?看返回值

论坛徽章:
0
3 [报告]
发表于 2007-06-14 22:48 |只看该作者
但是当执行-r /var/www/html/main/index.jsp 时就由于mount已经异常终止,该命令无法执行,死在这里了.

论坛徽章:
0
4 [报告]
发表于 2007-06-14 22:57 |只看该作者
运行mount
查看结果是否包含你要的目录

论坛徽章:
0
5 [报告]
发表于 2007-06-14 23:10 |只看该作者
原帖由 doctorjxd 于 2007-6-14 22:57 发表
运行mount
查看结果是否包含你要的目录


如果A宕机,在B机上mount应该还可以看到,不过已经进不去目录了

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
6 [报告]
发表于 2007-06-15 08:28 |只看该作者
用df行不行?

论坛徽章:
0
7 [报告]
发表于 2007-06-15 08:49 |只看该作者
原帖由 waker 于 2007-6-15 08:28 发表
用df行不行?


一样,命令执行会死在那里

论坛徽章:
0
8 [报告]
发表于 2007-06-18 13:42 |只看该作者
看来只好开两个进程,A进程执行那些探询命令,B进程监视A进程,发现超时利己杀死A进程,并报告mount无效。

论坛徽章:
0
9 [报告]
发表于 2007-06-18 22:29 |只看该作者
以前写的思路:
1。先ping服务器,通则继续,不通则报警,并退出。
2。使用showmount等nfs相关检测命令检测服务器是否正确export出目录,是则继续,否则报警,并退出。
3。检测都无误之后继续你的脚本。

另外,mount nfs的时候有一个硬挂载和软挂载的区别。
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
可以试试看软的mount方式。

论坛徽章:
0
10 [报告]
发表于 2007-06-18 22:35 |只看该作者
这里还有些mount时的参数,可以参考一下,特别是timeo和intr

mount nfs的其它可选参数:
HARD mount和SOFT MOUNT:
HARD: NFS CLIENT会不断的尝试与SERVER的连接(在后台,不会给出任何提示信息,在LINUX下有的版本仍然会给出一些提示),直到MOUNT上。
SOFT:会在前台尝试与SERVER的连接,是默认的连接方式。当收到错误信息后终止mount尝试,并给出相关信息。
例如:mount -F nfs -o hard 192.168.0.10:/nfs /nfs
对于到底是使用hard还是soft的问题,这主要取决于你访问什么信息有关。例如你是想通过NFS来运行X PROGRAM的话,你绝对不会希望由于一些意外的情况(如网络速度一下子变的很慢,插拔了一下网卡插头等)而使系统输出大量的错误信息,如果此时你用的是HARD方式的话,系统就会等待,直到能够重新与NFS SERVER建立连接传输信息。另外如果是非关键数据的话也可以使用SOFT方式,如FTP数据等,这样在远程机器暂时连接不上或关闭时就不会挂起你的会话过程。

rsize和wsize:
文件传输尺寸设定:V3没有限定传输尺寸,V2最多只能设定为8k,可以使用-rsize and -wsize 来进行设定。这两个参数的设定对于NFS的执行效能有较大的影响
bg:在执行mount时如果无法顺利mount上时,系统会将mount的操作转移到后台并继续尝试mount,直到mount成功为止。(通常在设定/etc/fstab文件时都应该使用bg,以避免可能的mount不上而影响启动速度)
fg:和bg正好相反,是默认的参数
nfsvers=n:设定要使用的NFS版本,默认是使用2,这个选项的设定还要取决于server端是否支持NFS VER 3
mountport:设定mount的端口
port:根据server端export出的端口设定,例如如果server使用5555端口输出NFS,那客户端就需要使用这个参数进行同样的设定
timeo=n:设置超时时间,当数据传输遇到问题时,会根据这个参数尝试进行重新传输。默认值是7/10妙(0.7秒)。如果网络连接不是很稳定的话就要加大这个数值,并且推荐使用HARD MOUNT方式,同时最好也加上INTR参数,这样你就可以终止任何挂起的文件访问。
intr 允许通知中断一个NFS调用。当服务器没有应答需要放弃的时候有用处。
udp:使用udp作为nfs的传输协议(NFS V2只支持UDP)
tcp:使用tcp作为nfs的传输协议
namlen=n:设定远程服务器所允许的最长文件名。这个值的默认是255
acregmin=n:设定最小的在文件更新之前cache时间,默认是3
acregmax=n:设定最大的在文件更新之前cache时间,默认是60
acdirmin=n:设定最小的在目录更新之前cache时间,默认是30
acdirmax=n:设定最大的在目录更新之前cache时间,默认是60
actimeo=n:将acregmin、acregmax、acdirmin、acdirmax设定为同一个数值,默认是没有启用。
retry=n:设定当网络传输出现故障的时候,尝试重新连接多少时间后不再尝试。默认的数值是10000 minutes
noac:关闭cache机制。
同时使用多个参数的方法:mount -t nfs -o timeo=3,udp,hard 192.168.0.30:/tmp /nfs
请注意,NFS客户机和服务器的选项并不一定完全相同,而且有的时候会有冲突。比如说服务器以只读的方式导出,客户端却以可写的方式mount,虽然可以成功mount上,但尝试写入的时候就会发生错误。一般服务器和客户端配置冲突的时候,会以服务器的配置为准。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP