死循环判断进程是否存活脚本
  P3nxyT0LRuwj 2023年11月25日 21 0

脚本如下:

#/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 语句想对应

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月25日 0

暂无评论

推荐阅读
  Yoru5qB4TSKM   2023年12月10日   15   0   0 服务器重启IP