死循环判断进程是否存活脚本
脚本如下:
#/bin/bash SLEEPTIME=3 software=httpd rpm -q psmisc &>/dev/null || ( yum install psmisc -y )&>/dev/null #sleep 5 while :;do if ! killall -0 $software &> /dev/null;then systemctl restart $software &>/dev/null echo "At `date +'%F %T'`$software is restart " >> /var/log/${software}.log fi sleep $SLEEPTIME done
解释如下:
SLEEPTIME=3
执行循环的时间,时间单位秒,变量方便修改,(时间为1也行,但实际重启服务1秒不一定能重启完成)
software=httpd
判断是否存活的服务名
rpm -q psmisc &>/dev/null || ( yum install psmisc -y )&>/dev/null
使用killall -0 判断服务是否存活,这里在循环前先判断psmisc服务是否存在,不存在则安装它
while :;do
使用while循环,这里的冒号是什么也不做直接返回正确,冒号处使用true也行
if ! killall -0 $software &> /dev/null;then
使用killall -0 探测httpd是否存活,&>/dev/null 输出的东西不显示在桌面上,这里用变量可以方便修改
systemctl restart $software &>/dev/null
重启服务,将输出信息重定向到垃圾箱中
echo "At `date +'%F %T'`$software is restart " >> /var/log/${software}.log
当服务重启后,直接在对应的日志文件中追加日志信息
fi
if语句相对应
sleep $SLEEPTIME
休眠,可以理解为多少秒执行一次,这里的变量值是3,则表示3秒循环一次
done
do 语句想对应
-------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------- 博客均为个人笔记,无所追求,仅供参考~~~ QQ--2382990774