我们在 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 身份登录。同样的问题:
答案1
要回答:“如何解决这个问题”,答案是使用 ps 命令:
ps -eaf|grep nginx
这表明,在发出停止或重新加载后,一个或多个 nginx 工作进程永远停留在“进程正在关闭”状态
结果,nginx 永远不会退出,整个情况被阻止,直到您杀死 pid 或发出 nginx -s stop(这基本上会杀死 pid,但更容易,因为您不必执行 pid 查找)。
它似乎与上游检查模块或用于 Web 套接字有关。
更具体的问题已发布在这里:nginx 1.7.9:反向代理 Web 套接字:服务停止/服务重启时挂起,永不退出