这些是我的 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 start
,grep
命令将报告完全相同的输出 - 一个主进程,两个工作进程和一个缓存管理器。
这是怎么回事?为什么我不能停止 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
(优雅关闭)的结果,看看上面提到的进程是否仍在运行。