当我运行 时sudo service nginx stop
,nginx 没有停止,屏幕上也没有任何消息打印,并且提示立即返回:
user:/etc/nginx$ sudo service nginx stop
user:/etc/nginx$
我认为通常会有一条消息,但它却不在那里。
以下是我的 ps 结果:
root 28527 0.0 0.2 130368 1484 ? Ss 02:46 0:00 nginx: master process nginx -c /etc/nginx/nginx.conf
www-data 28528 0.0 0.7 131368 3776 ? S 02:46 0:00 nginx: worker process
以下是 nginx 状态
sudo service nginx status
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2018-02-23 03:06:51 UTC; 55min ago
Process: 28519 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=1/FAILURE)
Process: 28633 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=1/FAILURE)
Process: 28629 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
Main PID: 19943 (code=exited, status=0/SUCCESS)
当我使用 -t 检查时,我的 nginx 文件是有效的
答案1
有一个已知问题有时nginx
无法使用service nginx stop
或停止该进程systemctl stop nginx
。
在这些罕见的情况下(它偶尔会出现,但不是由于很难重现案例以解决问题,因此您必须采用“老式”的方法来执行此操作。
首先,您必须终止现有nginx
进程。
sudo kill $(pidof nginx)
这将终止现有的 NGINX 进程,以便您不再运行任何进程。
从那里,您可以使用sudo service nginx start
或类似命令重新启动进程。现在,您还应该能够在重新启动 nginx 进程后停止它们,就像sudo service nginx stop
您通常使用的那样。
(我已经研究这个问题两年多了,从来没有重现过这些情况,这是我唯一一次遇到这个问题我是我从 1.10.x 升级到 1.12.x 时遇到的一次,所以这是一个不可能重现的问题,因此几乎不可能真正找出如何防止将来再次发生此问题)