shell习题第13题:监控nginx进程
【题目要求】
在服务器上写一个脚本,要求如下
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=
for i in `seq `
do
/usr/local/nginx/sbin/nginx -s restart > /tmp/nginx.err
if [ ! $? -eq ]; then
c=$[$c+]
else
break
fi
done if [ $c -eq ]; then
python mail.py .qq.com "nginx进程数大于500,重启失败" "head -l /tmp/nginx.err"
exit
fi
} while :
do
n=`ps -C nginx --no-heading | wc -l`
if [ $n -ge ]; then
check_service
sleep
n_new=`ps -C nginx --no-heading | wc -l`
if [ $n_new -ge ]; then
python mail.py .qq.com "nginx重启1分钟后进程数仍然大于500,重启失败" "清登陆服务器检查问题吧"
exit
fi
fi
sleep
done
shell习题第13题:监控nginx进程的更多相关文章
- shell习题第24题:杀进程
[题目要求] 一台机器负载高,top查看到有很多sh的进程,然后top -c查看可以看到对应的进程命令是sh -c /bin/clear.sh 经分析后发现是因为该脚本执行时间太长,导致后续执行时,上 ...
- 使用nagios+python监控nginx进程数
1.编写python脚本监控nginx #!/usr/bin/python # -*- coding: utf-8 -*- import os, sys, time import string imp ...
- zabbix监控nginx进程
确认nginx有没有安装模块 然后在主站点下添加(二级站点) location /NginxStatus { stub_status on; access_log off; allow 127.0.0 ...
- shell习题第8题:监控nginx的502状态
[题目要求] 服务器上跑的是LNMP环境,近期总是有502现象.502为网站访问的状态码,200正常,502错误是nginx最为普遍的错误状态码. 由于502只是暂时的,并且只要一重启php-fpm服 ...
- shell习题第4题:监控ip地址存活
[题目要求] 设计一个脚本,监控远程的一台机器(ip为192.168.1.100)的存活状态,当发现宕机的时候发一份邮件给自己 [核心要点] ping -c10 192.168.1.100通过 pin ...
- shell习题第26题:监控mysql服务
[题目要求] 假设mysql密码是123456. 写脚本监控mysql服务是否正常,比如是否可以执行show processlist,并检测一下当前的mysql服务是主还是从.如果是从,请判断他的主从 ...
- shell习题第10题:打印每个单词的字数
[题目要求] 用shell打印下面这句话中字母数小于6的单词. Bash also interprets a number of multi-character options. [核心要点] for ...
- shell习题第7题:备份数据库
[题目要求] 设计一个shell脚本用来备份数据库,首先在本地服务器上保存一份数据,然后再远程拷贝一份,本地保存一周的数据,远程保存一个月 假设我们知道mysql root账号的密码,要备份的库为da ...
- shell习题第3题:统计内存大小
[题目要求] 写一个脚本计算一下linux系统所有进程占用内存的大小的和 [核心要点] ps命令用法 for循环 加法运算 [脚本] #!/bin/bash for n in `ps aux | gr ...
随机推荐
- Js 之将html转为图片html2canvas
一.效果图 二.代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...
- javaEE项目部署方式
1.手动部署 2.自动化部署 “自动化”的具体体现:向版本库提交新的代码后,应运服务器上自动部署
- Elasticsearch的java客户端JEST的操作
准备 把Elasticsearch安装好 安装百度上有很多资料. 导入必要的包 <parent> <groupId>org.springframework.boot</g ...
- iview -- vue modal 显示到最顶层 层级
给想要显示到顶层的modal 设置class属性 .my-modal-parent { position: fixed; // 浮动 z-index:; }
- arcgis python 列出一个表所有字段
import arcpy inFeature = arcpy.GetParameterAsText(0) #原始数据 try: fieldList = arcpy.ListFields(inFeatu ...
- <JavaScript> call()、apply()、bind() 的用法
其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; obj.myFun() // 小张年龄 undefined 例 2 shows() ...
- MongoDB作为windows服务来安装-2
首先区官网下载对应版本的安装文件,我本地的环境是win7 bit64 我下载的版本是:mongodb-win32-x86_64-2.4.6 ok, 文件下载后,开始安装,这里要说一下,如果直接启动Mo ...
- rrt tree
package com.bim.rrt_20190529; import static java.lang.Math.pow;import static java.lang.Math.sqrt; im ...
- vue-cli3项目运行时一直发http://localhost:8080/sockjs-node/info?t=1462183700002请求
报错如下图: 解决方式: 一.如果是在开发环境,应该是开发的时候网络环境变更导致,比如你切换无线网络,导致开发服务器的IP地址换了,这样开发服务器会不知道如何确定访问源.开发环境中关闭npm dev ...
- admin源码分析
django settings 源码分析 导入settingso模块,进入源码,会发现settings是一个 单例 LazySettings类实例化产生的一个对象,LazySettings实例化后就会 ...