NGINX 忽略停止/启动/重启信号,但不报告任何错误

NGINX 忽略停止/启动/重启信号,但不报告任何错误

这些是我的 NGINX 进程:

root@ip-192-168-0-12:/etc/nginx/sites-enabled# ps aux | grep nginx
root      4758  0.0  0.0 102208  2780 ?        Ss   Jul25   0:00 nginx: master process /usr/sbin/nginx
www-data  5585  0.0  0.0 105868  7048 ?        S    Jul26  18:12 nginx: worker process
www-data  5586  0.0  0.0 105868  6972 ?        S    Jul26  18:07 nginx: worker process
www-data  5587  0.0  0.0 102208  2444 ?        S    Jul26   0:07 nginx: cache manager process
root     13190  0.0  0.0  12828  1008 pts/2    S+   20:13   0:00 grep --color=auto nginx

现在让我们停止 NGINX:

root@ip-192-168-0-12:/etc/nginx/sites-enabled# service nginx stop
nginx stop/waiting

让我们看看这些进程是否仍然存在(天啊他们还在那儿):

root@ip-192-168-0-12:/etc/nginx/sites-enabled# ps aux | grep nginx
root      4758  0.0  0.0 102208  2780 ?        Ss   Jul25   0:00 nginx: master process /usr/sbin/nginx
www-data  5585  0.0  0.0 105868  7048 ?        S    Jul26  18:12 nginx: worker process
www-data  5586  0.0  0.0 105868  6972 ?        S    Jul26  18:08 nginx: worker process
www-data  5587  0.0  0.0 102208  2444 ?        S    Jul26   0:07 nginx: cache manager process
root     13230  0.0  0.0  12828  1008 pts/2    S+   20:16   0:00 grep --color=auto nginx

然后,如果我运行service nginx startgrep命令将报告完全相同的输出 - 一个主进程,两个工作进程和一个缓存管理器。

这是怎么回事?为什么我不能停止 NGINX?

答案1

它看起来像service nginx stop向 nginx 进程发送了一个 SIGTERM,但这并不能保证停止它。

正如上面的评论所建议的,您/etc/init.d/nginx可以检查该函数的内容do_stop()并查看是否有:

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PID --name $NAME。您可能想要更改那里的超时时间(该示例中为 30、5)。

另外,检查命令nginx -s stop(快速关闭)或nginx -s quit(优雅关闭)的结果,看看上面提到的进程是否仍在运行。

相关内容