我们在 centos 6 上使用 nginx,以及此处的 init.d 脚本:https ://gist.github.com/sairam/5892520/raw/b8195a71e944d46271c8a49f2717f70bcd04bf1a/etc-init.d-nginx
这一切都“有效”
Nginx 运行等。
但是,在某些情况下,通过 ssh 使用此 init.d 脚本后,该脚本(无论是通过 ssh 还是在控制台上以 root 身份)似乎都只能工作。
例如
service nginx stop
[OK]
但是 nginx 还在运行....
service nginx restart
[OK]
但是该服务以相同的 pid 运行,并且从未退出。
重新启动盒子似乎是正确让服务停止和重新启动的唯一方法。
完整的步骤和问题如下所示。
我该如何解决这个问题?
在这里,我以 sysadmin 身份登录,然后 su up 运行命令:
在这里,我只是以 root 身份登录。同样的问题:
要回答:“如何解决这个问题”,答案是使用 ps 命令:
ps -eaf|grep nginx
这表明发出停止或重新加载后,一个或多个 nginx 工作进程永远卡在“进程正在关闭”中
结果,nginx 永远不会退出,整个情况都会被破坏,直到您终止 pid 或发出 nginx -s stop (这基本上会终止 pid,但更容易,因为您不必进行 pid 查找)。
它似乎与上游检查模块或用于网络套接字时有关。
更具体的问题已在此处发布:nginx 1.7.9: Reverse Proxy Web Sockets: hangs on service stop / service restart, never exits