> shell编程 >

shell脚本监控nginx的运行状态

监控逻辑为:监控nginx端口状态是否正常 以及 nginx进程号是否存在
监控脚本名称为nginx_monitor.sh,脚本内容如下
#!/bin/sh 
MONITOR_LOG=/home/gavin2/scripts/log/nginx_monitor.log
nginx_monitor()
{
  #nginx的端口号
  PORT="80"

  #获取nginx端口监听状态,如果nginx正常运行,PORT_FLAG值为0
  PORT_STATUS=$(netstat -plnt|grep $1|grep ${PORT})

  #获取上一个命令的退出状态,正常退出为0
  PORT_FLAG=$?

  #使用管道命令查询nginx的进程号
  NGINX_STATUS=$(ps -ef |grep $1|grep -v 'grep'|grep master|awk '{print $2}')

  #如果进程号存在并且端口监听正常,则说明nginx正常运行
  if [ ${NGINX_STATUS} ] && [ ${PORT_FLAG} = "0" ];then
    echo `date "+%Y/%m/%d %H:%M:%S $1 is running"` >>${MONITOR_LOG} 2>&1
  else
    echo `date "+%Y/%m/%d %H:%M:%S [error] $1 has already shutdown"` >>${MONITOR_LOG} 2>&1
  fi
}
#调用nginx_monitor函数,其中nginx是参数,为nginx的进程名,也就是nginx的目录名
nginx_monitor nginx



手动执行脚本使用如下命令
sudo bash nginx_monitor.sh
#或者
sudo sh nginx_monitor.sh #需要先获得执行权限


如果想要定时执行,需要使用linux的crontab,使用 sudo crontab -e 命令打开配置文件,在文件末尾添加如下内容
*/1 * *  * * sh /home/gavin2/scripts/nginx_monitor.sh



其中
1)*/1 * * * *表示每分钟执行一次
2)sh表示使用sh来执行该脚本
3)/home/gavin2/scripts/nginx_monitor.sh 为监控脚本的路径,需要根据自己实际情况来配置





(责任编辑:IT)