文章插图
然后脚本检测到后,进而重启 。这时server的进程号已经变化 。这样server服务器的进程就完成的死亡重启的监控 。
综合起来这句指令的意思就是:
以详细格式查看所有进程,从中选出具有关键字 Manipulator 的进程,但是排除掉用于查找的grep自身进程,对于满足上面条件的结果,统计其行数,也就是看有几个带有Manipulator关键字的进程,将统计的结果赋值给变量monitor。
if…then…else…fi : shell脚本里面 if 语句的用法, fi 符号与 if 符号成对使用,表示 if 语句的结束 。
if [ $monitor -eq 0 ] : if 语句的判断用 test 或者 “[ ]” ,符号” $“ 表示取变量的值, -eq表示等于, -gt大于, -lt小于, -ge大于等于,-le小于等于 。
echo :用于输出显示 。
文章插图
用于运行Manipulator程序 。
二、对使用python打开的多个程序的监控
因为知道自己想要监控的程序的具体名字,所以对于这一类程序的监控也可以用上面的方法,但是这一类情况也让我们思索另一种方法进行监控 。
在我的 /home/mk90/Documents/restart_pro 文件夹里有 test.py 和 test2.py 两个python程序,现在我要看这两个程序是否已经打开,如果没有就打开它们 。
multi_restart.sh
文章插图
文章插图
declare -a Array : 表示声明了一个数组 Array
文章插图
这句指令包含的内容较多
pgrep 是通过程序的名字来查询进程的工具;
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作,详细用法可以参考
https://blog.csdn.net/zhushuai1221/article/details/53114178
sed -n 1p : 的作用就是对前面查找的结果,读取第一行,同样 sed -n 2p 就是读取第二行 ;
awk '{print $1}’ : awk命令通常是将所列出的行,根据条件打印出某一列或几列,这里就是打印以空格为分隔符的第一列(其实也只有一列,因为pgrep命令只输出进程的pid号;
那么
文章插图
两条指令的意思就是,查看名为python的进程,把查到的第一个进程的pid号赋值给Array[0],把第二个赋值给Array[1];
后面的判断就是只要有进程pid号,说明进程存在,否则进程不存在 。
文章插图
这句代码的意思就是打开一个新的终端,执行命令 ”python /home/mk90/Documents/restart_pro/test2.py“,执行完毕后该终端保持存在不关闭 。
gnome-terminal 是终端的一种,Ubuntu系统的终端就是这种版本, 参数 -x 表示后面出现的都当做命令执行,并且只执行一次;
bash 是防止终端立即关闭,如果输入:
文章插图
终端执行后会一闪就关闭,甚至看不到执行的效果;
"-c"选项使shell解释器从一个字符串中而不是从一个文件中读取并执行shell命令;
exec bash 使终端运行命令后仍然存在 。
缺陷:
用这种方法有一个缺陷,就是需要知道会有几个python程序以及它们的的顺序;如果有两个的话,操作第二个是正常的,可以重启,但是如果第一个程序死了,也会重启第二个程序!!!因为第一个进程中断之后,系统实时监测,第二个进程变成了最前面的也是唯一的python进程,那么它认为第一个程序还在运行,而第二个程序停止了,所以会重启第二个程序 。
总结;有什么问题和需要相关资料的都可以私信‘资料'两字可MF领取相关资料,C++、linux,shell,Kali,
首先明白一个前提,我们是发现问题才会告警发邮件通知,那么当告警脚本未加载时,说名当前监控项正常 。或者之前出现异常,但是已经恢复 。
脚本的目的是防止问题出现,处于修复期的频繁告警 。我们可以定义一个时间阈值,一小时 。比如距离上一次问题出现,也就是距离上一次告警的时间大于一小时,我们认为就是一个新的异常,否则就是一个尚未解决的故障 。
推荐阅读
- 压缩文件是什么原理?
- 宁红茶的历史文化
- 教你玩转HTTP—状态码
- 宁红茶的历史小故事
- 宁红茶的历史
- Spring boot 配置类与配置文件详解
- 宁红红茶的发展历史
- 孟加拉大吉岭红茶
- 孕晚期可以喝伯爵红茶吗
- 奶茶阿萨姆红茶比例