九、Shell脚本高级编程实战第九部
一、监控mysql主从同步是否异常,如果异常,发送短信给管理员
1)开发一个守护进程脚本每30秒实现检测一次。
2)如果错误号是:1158、1159、1008、1007、1062,请跳过
3)请使用数组实现上述要求
#!/bin/sh
errorno=(1158 1159 1008 1007 1062)
mysql_cmd=" mysql -uroot -poldboy124 -S /data/3307/mysql.sock"
while true
do
flag=0
array=($($mysql_cmd -e "show slave status\G"v|egrep '_Running|Behind_Master|SQL_Errno" |awk '{print $NF}'))
if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[2]}" =="0" ]
then
echo "Mysql slave is ok"
else
for((i=0;i<${#errorno[*]};i++))
do
if [ "${array[3]}" -eq "${errorno[$i]}" ];then
$mysql_cmd -e "stop slave &&set global sql_slave_skip_count=1;start slave;"
fi
done
char="Mysql slave is not ok"
echo "$char"
echo "$char"|mail -s "$char" 828882@qq.com
fi
sleep 5
done
二、for循环打印下面这句话字母不大于6的单词
#!/bin/sh
arr=(I am oldboy teacher welcome to oldboy training class)
for word in ${arr[*]}
do
if [ ${#word} -le 6 ]
then
echo $word
fi
done
三、监控web站点下目录/var/html/www下所有文件是否被恶意篡改,如果有就打印改动的文件名(发邮件),定时任务每3分钟执行一次
#!/bin/sh
n=`cat check_site.log|wc -l`
while true
do
f= md5sum -c md5sum.db 2>/dev/null|grep FAILED|wc -l
find1=`find ./apache2.2.27/ -type f|wc -l`
log=/tmp/check.log
if [ $f -ne 0 ] || [ `cat $path/new_site.log|wc -l` -ne $n ]
then
echo "md5sum -c md5sum.db 2>/dev/null|grep FAILED" >$log
diff $path/check_site.log $path/new_site.log>>$log
mail -s "site is cuangai $(date)"<$log
fi
sleep 3
done
四、对于脚本的调试,要查看报错信息,保持好的开发脚本的习惯,思路要清晰。复杂脚本要简单化分段式实现脚本。
1)使用dos2unix处理window下写的脚本
dos2unix xx.sh脚本进行文件格式化
2)使用echo 在命令中进行调试
3)sh -x :将脚本执行的内容和参数显示在屏幕上
4)set -x(set +x): 可以进行调试脚本的范围
最后:
推荐书籍: Unix shell 范例精解(第4版)