前言:
最近我购买了一台新的服务器,配置好环境后,发现Nginx
经常意外停止运行。经过一番努力,我终于解决了这个问题。为了防止以后出现类似情况,我编写了一个shell
脚本来监控 Nginx
的状态,如果它停止运行,脚本会自动重启 Nginx
,以确保它一直处于运行状态。当然,如果你的 Nginx
频繁自动停止,那么你需要找出根本原因并解决它。
1. 使用宝塔面板
如果你使用宝塔面板,那么非常简单。只需进入“计划任务”菜单,选择“shell
脚本”作为任务类型,选择执行周期为 15 分钟,然后将下面的代码填入“脚本内容”中:
这样,每隔 15 分钟脚本就会自动检测 Nginx
是否停止运行,如果停止了,它会自动启动 Nginx
。请注意,你可以根据需要自行修改时间间隔。
#!/bin
/bash
# author
: 汇站网
# website
: https
://www
.huizhanii
.com
/34397.html
2. 其他通用方法
如果你使用的是其他面板或程序,你可以尝试以下通用方法来解决问题。
2.1 创建脚本
将下面的代码保存为 dr_check_nginx
.sh
文件,并上传到服务器的 root
目录下。然后执行命令 chmod
+x
/root
/dr_check_nginx
.sh
,为该脚本文件赋予执行权限。
#!/bin
/bash
# author
: 汇站网
# website
: https
://www
.huizhanii
.com
/34397.html
# 检查 nginx
的状态
nginx_procnum
=`ps
-ef
|grep
"nginx
"|grep
-v
grep
|wc
-l
`
# 如果 nginx
没有运行
if
[ $nginx_procnum
-eq
0 ]
then
echo
"Nginx
is
not
running
. Restarting
Nginx
."
/etc
/init
.d
/nginx
start
else
echo
"Nginx
is
running
."
fi
2.2 添加定时任务
使用 crontab
-e
命令添加一个定时任务,将检查时间间隔设置为 15 分钟(根据需要自行修改):
#autorestartNginx
*/15****/bin
/bash
/root
/dr_check_nginx
.sh
3. 检测并重启 NMP
该脚本可以检测 php
、nginx
、mysql
d
和redis
是否正在运行,并自动重启它们。你可以根据自己的服务器环境进行修改和删减。使用方法请参考上述第 2 节。
#!/bin
/bash
# author
: 汇站网
# website
: https
://www
.huizhanii
.com
/34397.html
# 检测 php
,nginx
,my
sql
d
,redis
是否运行并自动重启
phpfpm_procnum
=`ps
-ef
|grep
"php
-fpm
"|grep
-v
grep
|wc
-l
`
nginx_procnum
=`ps
-ef
|grep
"nginx
"|grep
-v
grep
|wc
-l
`
mysql_procnum
=`ps
-ef
|grep
"mysqld
"|grep
-v
grep
|wc
-l
`
redis_procnum
=`ps
-ef
|grep
"redis
"|grep
-v
grep
|wc
-l
`
if
[ $phpfpm_procnum
-eq
0 ]
then
echo
"Php
-fpm
is
not
running
. Restarting
Php
-fpm
."
/etc
/init
.d
/php
-fpm
-71 start
else
echo
"Php
-fpm
is
running
."
fi
if
[ $nginx_procnum
-eq
0 ]
then
echo
"Nginx
is
not
running
. Restarting
Nginx
."
/etc
/init
.d
/nginx
start
else
echo
"Nginx
is
running
."
fi
if
[ $mysql_procnum
-eq
0 ]
then
echo
"Mysql
is
not
running
. Restarting
Mysql
."
/etc
/init
.d
/mysql
start
else
echo
"Mysql
is
running
."
fi
if
[ $redis_procnum
-eq
0 ]
then
echo
"Redis
is
not
running
. Restarting
Redis
."
/etc
/init
.d
/redis
start
else
echo
"Redis
is
running
."
fi
转载请注明:汇站网 » Linux
Shell
脚本实时监测 Nginx
状态/挂掉脚本会立即自动重启 Nginx