我以为这很容易但似乎并非如此。
这是我的系统信息:
# nginx -v
nginx version: nginx/1.8.0
# uname -a
Linux ip-10-0-0-247 3.2.0-69-virtual #103-Ubuntu SMP Tue Sep 2 05:21:29 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.5 LTS
Release: 12.04
Codename: precise
以下是我停止 NginX 的各种尝试:
# netstat -punta | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1743/nginx -g daemo
# service nginx stop
nginx start/running, process 1775
# netstat -punta | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1775/nginx -g daemo
# nginx -s stop
# netstat -punta | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1783/nginx -g daemo
# nginx -s quit
# netstat -punta | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1791/nginx -g daemo
# initctl stop nginx
nginx start/running, process 1830
# netstat -punta | grep nginx
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 1830/nginx -g daemo
如上所示,每次我尝试停止 NginX 服务时,它都会以新的 PID 启动。寻求帮助以优雅地停止 NginX 服务。
答案1
尝试这个:
sudo kill $(pgrep nginx)
如果不起作用请尝试
sudo pkill nginx
如果不起作用请尝试搜索服务的PID:
ps aux | grep nginx
然后通过PID杀死:
sudo kill -9 PID
答案2
根据这个答案nginx.conf 文件和控制所有“服务”操作的 init 脚本之间存在不一致。
该行pid /tmp/nginx.pid;
应该出现在您的/etc/nginx/nginx.conf
文件中。该行应该复制到脚本中所有/etc/init.d/nginx
引用 pid 的操作中。然后 top/reload/restart 操作应该全部起作用。