Nginx/Apache之类的长期运行,无法保证在遇到各种突发情况进程不会死掉。如果这时候又出门在外,一时间无法操作,那网站岂不是要宕机数个小时?
明显我无法接受这事情。于是一个简简单单的监控HTTP服务的Shell Script就出来了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash #函数restart restart() { #重启Nginx service nginx restart #重启Apache service httpd restart } #循环的开始 while [ "$loop" = "" ] do #延迟五秒 sleep 5 #是否能下载,是则进入下一步循环,否则执行restart wget -O /dev/null http://你的网站地址 -t 1 || restart done |
真的简简单单。
可见我并没有采用cron功能,毕竟这东西正常情况最低频率只能一分钟了。
restart那个function是http服务不正常后执行的,可以自行增添,删减,替换。sleep后面跟着的是秒数,在这里简单理解成监控频率吧。wget处,-t参数指的是尝试次数,这里我写了一次。
执行方式:
1 |
nohup /root/monitor >/dev/null 2>&1 & |
其中的/root/monitor指的是该Shell Script所存放的路径。记得要先赋予当前用户对该文件的执行权限。
可以添加到/etc/rc.local里面实现系统启动自动执行:
1 |
sed -i "1inohup /root/monitor >/dev/null 2>&1 &" /etc/rc.local |
终止:
1 |
kill %$(jobs | grep monitor | cut -d "[" -f 2 | cut -d "]" -f 1) |
其中grep后面跟着的是你Shell Script的文件名。
有了这东西,出门在外,至少能安心一点了。
Comments are closed.