Shell脚本经验自动化菜鸟

经验分享:一个守护nginx进程的shell/bash脚本

这是一个用于监测nginx运行状态的脚本,当nginx运行异常被结束掉之后,脚本会自动尝试重启nginx进程。

脚本适用于某些不太稳定的Linux系统分支或者其他奇葩状况的环境。

my-wp-pluins_banner_andyx.net_.jpg插图

将以下脚本保存为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

nginx_d_sh_code.jpg插图(1)

使用起来推荐与系统任务计划cron搭配进行,添加cron计划命令如下:

crontab -e

然后再接下来的编辑器中输入:

*/1 * * * * bash /home/andyx/autoshell/nginx_d.sh

解释为每分钟执行一次nginx_d.sh脚本

nginx_d_sh.jpg插图(2)

以上,END。