【题目要求】
在服务器上写一个脚本,要求如下
1. 每隔10秒去检查而一次服务器上的Nginx进程数,如果>=500的时候,就需要自动重启一下Nginx服务,并检测启动是否成功
2. 如没有正常启动还要再一次启动,最大不成功数超过5次则需要立即发邮件通知管理员,并且之后不需要再检测
3. 如果启动成功之后,1分钟后再次检测Nginx进程,若正常则重复之前的操作(每隔10秒检查一次),若还是>=500,那放弃重启并需要发邮件给管理员,然后自动退出脚本。假设发邮件脚本为mail.py
【核心要点】
pgrep -l Nginx 或者 ps -C Nginx --no-heading检查进程
如何计数5次
【脚本】
#!/bin/bash check_service() { c=0 for i in `seq 1 5` do /usr/local/Nginx/sbin/Nginx -s restart 2> /tmp/Nginx.err if [ ! $? -eq 0 ]; then c=$[$c+1] else break fi done if [ $c -eq 5 ]; then python mail.py 110.qq.com "Nginx进程数大于500,重启失败" "head -l /tmp/Nginx.err" exit fi } while : do n=`ps -C Nginx --no-heading | wc -l` if [ $n -ge 500 ]; then check_service sleep 60 n_new=`ps -C Nginx --no-heading | wc -l` if [ $n_new -ge 500 ]; then python mail.py 110.qq.com "Nginx重启1分钟后进程数仍然大于500,重启失败" "清登陆服务器检查问题吧" exit fi fi sleep 10 done
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。