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身份login,然后运行命令:

在这里输入图像说明

在这里,我只是以root用户身份login。 同样的问题:

在这里输入图像说明

回答:“如何解决这个问题”的答案是使用ps命令:

ps -eaf | grep nginx

这表明,在发出停止或重新加载之后,一个或多个nginx工作进程永远停留在“进程正在closures”

因此,nginx永远不会退出,并且整个情况都会被解决,直到你杀死了pid或者发出了nginx -s stop(这基本上杀死了pid,但是因为你不需要进行pid查找而更容易)。

这似乎与上游检查模块或用于networking套接字有关。

更具体的问题发布在这里: nginx 1.7.9:反向代理Web套接字:挂起服务停止/服务重启,从不退出