Linux运维必会的实战编程笔试题(19题)

企业面试题1(生产实战案例):监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:

阶段1:开发一个守护进程脚本每30秒实现检测一次。

阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。

阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)

#假设文件为/log/test/mysql/err
#假设错误为: error:1120:...
#!/bin/bash
#
#监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
#阶段1:开发一个守护进程脚本每30秒实现检测一次。
#阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
#阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)
#假设文件为/log/test/mysql/err
#假设错误为: error:1120:...
#
#version 0.1
#errlocate='/log/test/mysql/err'
declare -a errnums
declare -i j=0function msgbox(){echo "MySQL error number is $1" | mail -s mysql.error.alert root
}while true; doif [ `grep 'error:[[:digit:]]\+:' ${errlocate}` ];thenfor i in `grep -o 'error:[[:digit:]]\+:' ${errlocate} | grep -o '[[:digit:]]\+'` ; doerrnums[$j]=$i;case ${errnums[$j]} in1158) continue;;1159) continue;;1008) continue;;1007) continue;;1062) continue;;*);;esac#echo "mysql.errnums=${errnums[$j]}" 测试用msgbox ${errnums[$j]}let j++#echo "j=$j" 测试用done#echo "it should be sleeped" 测试用sleep 30sj=0elsesleep 30s#没有报错就直接等待30sfi
done

后台运行之:

-113-[root@vm]18:25 /tmp/sh # chmod -x ywtest1.sh
-114-[root@vm]18:26 /tmp/sh # .ywtest1.sh &

不过这个办法并不绝对可靠, 再使用pstree命令时, 自动退出了:

使用 crontab -e创建守护进程, 同时也要取消源代码中的while循环

参考:

linux crontab & 每隔10秒执行一次

-115-[root@vm]18:25 /tmp/sh # crontab -e
* * * * * /bin/bash /tmp/sh/ywtest1.sh
* * * * * sleep 30s;/bin/bash /tmp/sh/ywtest1.sh

看一下执行效果:

每分钟两封邮件, 即30s一封


但是, 这样会产生一个问题, 当有多个错误码时, 每个错误码都会发一封邮件, 而其本身就是30s执行一次, 所以应该把一次执行的报错结果, 集中到一封邮件中;

解决办法: 修正msgbox函数, 直接输出errnums数组, 不需要参数;

输出数组问题: case屏蔽掉的也会输出出来, 原因在于先赋值给数组后进行筛选

解决办法: 改变赋值次序;


最终版本:

#!/bin/bash
#
#监控MySQL主从同步是否异常,如果异常,则发送短信或者邮件给管理员。提示:如果没主从同步环境,可以用下面文本放到文件里读取来模拟:
#阶段1:开发一个守护进程脚本每30秒实现检测一次。
#阶段2:如果同步出现如下错误号(1158,1159,1008,1007,1062),则跳过错误。
#阶段3:请使用数组技术实现上述脚本(获取主从判断及错误号部分)
#文件为/log/test/mysql/err
#错误为: error:1120:...
#
#version 0.1
#errlocate='/log/test/mysql/err'
declare -a errnums
declare -i j=0function msgbox(){echo "MySQL error number is ${errnums[@]}" | mail -s mysql.error.alert root}
#删掉whileif grep 'error:[[:digit:]]\+:' ${errlocate};thenfor i in `grep -o 'error:[[:digit:]]\+:' ${errlocate} | grep -o '[[:digit:]]\+'` ; docase $i in  #改变赋值给数组的次序1158) continue;;1159) continue;;1008) continue;;1007) continue;;1062) continue;;*);;esac#echo "mysql.errnums=${errnums[$j]}"errnums[$j]=$i;let j++#echo "j=$j"done#echo "it should be sleeped"msgbox #取消参数传递, 直接使用数组输出sleep 30sj=0elsesleep 30s#没有报错就直接等待30sfi

DONE, 后续敬请期待!

转载于:https://www.cnblogs.com/gettolive/p/8986959.html

运维派 企业面试题1 监控MySQL主从同步是否异常相关推荐

  1. 运维派 企业面试题6 防dos攻击

    Linux运维必会的实战编程笔试题(19题) 企业实战题6:请用至少两种方法实现! 写一个脚本解决DOS攻击生产案例 提示:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到 ...

  2. 运维派 企业面试题45 创建10个 用户 ; ping探测主机是否在线

    Linux运维必会的实战编程笔试题(19题) 企业面试题4: 批量创建10个系统帐号oldboy01-oldboy10并设置密码(密码为随机8位字符串). #!/bin/bash #for((i=1; ...

  3. 运维派 企业面试题2 创建10个 十个随机字母_test.html 文件

    Linux运维必会的实战编程笔试题(19题) 企业面试题2: 使用for循环在/tmp/www目录下通过随机小写10个字母加固定字符串test批量创建10个html文件,名称例如为: -243-[ro ...

  4. 运维派 企业面试题3 为上题中的 十个随机字母_test.html 文件 更名

    Linux运维必会的实战编程笔试题(19题) 企业面试题3 #将试题2中创建的文件名uopiyhgawe_test.html # test-->修改为omg,html-->HTML 方法一 ...

  5. nagios系列(七)nagios通过自定义脚本的方式监控mysql主从同步

    nagios监控mysql主从同步 起因:nagios可能监控到mysql服务的运行情况,但确不能监控mysql的主从复制是否正常:有时候,同步已经停止,但管理人员却不知道. 登陆mysql从服务器, ...

  6. zabbix3.0.4监控mysql主从同步

    zabbix3.0.4监控mysql主从同步 1.监控mysql主从同步原理: 执行一个命令 mysql -u zabbix -pzabbix -e 'show slave status\G' 我们在 ...

  7. 监控mysql主从同步状态是否异常

    监控mysql主从同步状态是否异常 参考文章: (1)监控mysql主从同步状态是否异常 (2)https://www.cnblogs.com/liuyansheng/p/8056268.html 备 ...

  8. 监控mysql主从的工具_zabbix利用percona-toolkit工具监控Mysql主从同步状态

    一.下载percona-toolkit工具包 percona-toolkit是一组高级命令行工具的集合,可以查看当前服务的摘要信息,磁盘检测,分析慢查询日志,查找重复索引,实现表同步等等. [root ...

  9. 高薪运维经典企业版面试题汇总

    1.解释下什么是GPL,GNU,自由软件? GPL:(通用公共许可证):一种授权,任何人有权取得.修改.重新发布自由软件的权力. GNU:(革奴计划):目标是创建一套完全自由.开放的的操作系统. 自由 ...

最新文章

  1. 《云原生人才计划之Kubernetes 技术图谱》发布!
  2. PlateSpin 完全复制由于LVM没有可用空闲空间导致失败
  3. 关于EF使用脏读(连接会话开始执行设置隔离级别)
  4. 海鸥表表带太长了怎么拆_表带安装,表带太长了,怎么拆解和安装?
  5. 在阿里工作5年了,斗胆谈谈我认为的高级开发到底应该是怎样的?
  6. Python基础----集合
  7. Python Tricks(十三)—— 欧几里得算法
  8. jquery悬停_jQuery悬停()
  9. 游戏开发筑基之输出中设置颜色(C语言)
  10. Android 学习之Fragment的创建
  11. 了解有关计算机病毒的知识,从基础知识开始 全面认识计算机病毒
  12. 天然气阶梯是按年还是按月_天然气阶梯不是明年1月1号开始么?怎么现在充气就限量了...
  13. android运行微信小程序,【报Bug】微信小程序在Android真机运行时报错atob is not a function...
  14. 03.设计模式之工厂模式
  15. [原创] PowerPC 汇编入门与优化
  16. [渝粤教育] 深圳信息职业技术学院 《新理念英语》English For You 参考 资料
  17. [转载] 晓说——第5期:张学良观虎斗旧电报还原军阀“宫心计”
  18. php制作日历带节日实验目的,php制作日历
  19. crontab shell 每5秒执行_shell之定时周期性执行脚本-crontab
  20. 大数据可视化-绘制景点热力图

热门文章

  1. php6基因突变,基因突变中那些“披着狼皮的羊” 很多“致命性”基因突变正在被证实无害...
  2. PS如何制作圆角矩形图片
  3. ios vs android设计
  4. 基于WPS的在线编辑服务【.net Core 3.1】
  5. 计算机算法可以用自然语言来描述吗,算法可以用自然语言描述吗
  6. [源码解读]一文彻底搞懂Events模块
  7. [设计报告]有屏的地方就有Bad Apple!! —— 12864版
  8. 小程序的横向二级顶部导航条,可以切换、拖动、二级定位在一级的下面,高度怎么办
  9. 两个超实用的 Kubernetes 集群中 Flannel 故障排除案例
  10. 云计算工程师面试题集锦,常见云计算面试题及答案