本人有一台服务器运行着Nginx有半年多,还算稳定,但是最近突然有一次崩溃,导致使用方当天无法访问网页端,然后我不得不登录服务器,检查各项服务,发现nginx崩溃了,于是重启Nginx,问题解决。
后来为了防止Nginx再发生这种情况给运维带来的运维成本,于是写了一个脚本,放到Linux计划任务里进行监听管理Nginx服务,一旦崩溃,那么就自动重启Nginx服务。当然该脚本适合各种后台服务,可以简单修改,适应各种后台服务程序。
首先编写shell脚本:
#!/bin/bash #author: Lucas.Yuan #www.jyguagua.com #Monitor nginx service #check root user if [ $(id -u) != "0" ] then echo "Not the root user! Try using sudo command!" exit 1 fi netstat -anop | grep 0.0.0.0:80 if [ $? -ne 1 ] then exit fi echo $(date +%T%n%F)" Restart nginx Services " >> nginx.log #/usr/local/nginx/sbin/nginx -s quit /usr/local/nginx/sbin/nginx
其实主要内容就是
- 检查是否是root用户
- 检查监听服务程序的端口是否还正常
- 对运行不正常的进程进行重启
最后,将该脚本命名为:nginx_restart.sh
加入Linux crontab自动任务里即可:
*/5 * * * * sh /usr/local/nginx/sbin/nginx_restart.sh
文章的脚注信息由WordPress的wp-posturl插件自动生成