我們要檢測與summer服務相關的的mount點是否正常,首先需要知道與summer服務相關的mount點都有哪些?在summer服務的配置文件xxxconf.xml中配置有mount點的配置信息。所以第一步,我們要從配置文件中找出<MountPointPath>標籤中的內容,即mount路徑,並將mount路徑暫存到conf_mount.list文件中。
summer服務需要的mount點可能不止一個,所以conf_mount.list中可能存在多個mount路徑,要檢查每一個mount點是否正常,就要對其進行循環遍歷。
不同的文件類型,掛載在不同的路徑下,所以需要先判斷文件類型。
mount命令可以查詢出所有的mount點,通過mount |grep "$mount_info" |wc -l命令查看是否有指定路徑的mount點的數量。
如果數量不爲0,表示有指定的mount點,在此基礎上測試這個mount是否正常,可以通過touch一個文件的方式,測試是否正常
file_type_check()
{
if [ -f "/usr/bin/mkmfsadm" ];then
tmp_file_type="mkm"
elif [ -f "/opt/SmartData/bin/smio_info" ];then
tmp_file_type="smartdata"
else
tmp_file_type="unknow_filetype"
fi
}
monitor_mount_state()
{
num=0
iteration_result1=""
tmp_file_type=""
file_type_check
cat $summerconf|grep "<MountPointPath>" |awk -F'<|>' '{print $3}' > conf_mount.list
for line in $(cat conf_mount.list)
do
if [ "$tmp_file_type" = "mkm" ];then
mount_info="/opt/mkmfs_fuse/$line"
tmp_mount_count=`mount |grep "$mount_info" |wc -l`
else
mount_info="/home/summer/data/$line"
tmp_mount_count=`mount |grep "$mount_info " |wc -l`
fi
if [ $tmp_mount_count -ne 0 ];then
file_date=`date +%Y%m%d%H%M%S`
touch /home/summer/data/$line/mounttest_$file_date 2>/dev/null;real_rm /home/summer/data/$line/mounttest_$file_date 2>/dev/null
if [ $? = 0 ];then
continue
else
if [ "X$iteration_result1" == "X" ];then
iteration_result1=$line
else
iteration_result1=$iteration_result1" "$line
fi
num=`expr $num + 1`
g_err_flag=1
fi
else
if [ "X$iteration_result1" == "X" ];then
iteration_result1=$line
else
iteration_result1=$iteration_result1" "$line
fi
num=`expr $num + 1`
g_err_flag=1
fi
done
if [ $num -eq 0 ];then
echo "check_mount_status is OK"
else
echo "check_mount_status is WARN"
fi
rm -rf conf_mount.list
return 0
}
Shell腳本案例(二).檢查summer服務mount點狀態是否OK
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.