Centos:init.d 中的脚本未按预期控制服务

Centos:init.d 中的脚本未按预期控制服务

我们在 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 套接字:服务停止/服务重启时挂起,永不退出

相关内容