这是一个用于监测nginx运行状态的脚本,当nginx运行异常被结束掉之后,脚本会自动尝试重启nginx进程。
脚本适用于某些不太稳定的Linux系统分支或者其他奇葩状况的环境。

将以下脚本保存为nginx_d.sh并且赋予可执行权限:
vim nginx_d.sh && chmod +x nginx_d.sh
脚本如下:
#!/bin/bash
#$$表示当前shell的pid号,需要过滤掉(防止当前shell脚本名字包含nginx的字符)
ps -ef|grep nginx|grep -vE "grep|$$" >/dev/null
#直接通过$?获取上一句shell执行的状态
if [ $? -eq 0 ];then
echo "Nginx is running"
else
#以下情况三选一就行了
# 1-适用于基于init的旧版本系统
service nginx restart
# 2-适用于基于sysv的新版本系统
systemctl restart nginx
# 3-适用啥都没写手动重启的方法
killall nginx && nginx
echo "Nginx is down,Starting..."
fi

使用起来推荐与系统任务计划cron搭配进行,添加cron计划命令如下:
crontab -e
然后再接下来的编辑器中输入:
*/1 * * * * bash /home/andyx/autoshell/nginx_d.sh
解释为每分钟执行一次nginx_d.sh脚本

以上,END。

