死循环判断进程是否存活脚本
脚本如下:
#/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
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步