ubuntu – 有没有办法检测nginx何时完成正常关闭?

发布时间:2020-08-23 发布网站:编程之家
编程之家收集整理的这篇文章主要介绍了ubuntu – 有没有办法检测nginx何时完成正常关闭?编程之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个 ruby on rails应用程序,它运行在passenger和nginx上,有一个主要的web服务器和多个应用程序服务器.我正在尝试更新我的部署过程,以最大限度地减少(或理想情况下,删除)部署导致的任何停机时间.现在的主要障碍是乘客需要一些时间来重新启动(即重新加载应用程序),所以为了解决这个问题,我想错开重启,以便一次只能重启一个应用服务器.

为了做到这一点而不丢失任何长时间运行的乘客流程,我想我需要优雅地关闭应用服务器的nginx实例,这将导致它不再接受新连接但继续处理现有连接;同样,HAProxy将检测到应用服务器已关闭并将新请求路由到其他服务器.

但是,假设有一个长时间运行的进程,我不知道如何检测正常关闭何时完成,以便我可以重新启动它.由于关闭是由发送信号引起的(即kill -QUIT $(cat /var/run/nginx.pid)),并且kill命令将立即返回,我无法组合命令(即kill …& & touch restarted),因为即使nginx没有完成其关闭,touch命令也会立即执行.

有没有好办法呢?

这样的事情怎么样?
while [ -n "$(pgrep nginx)" ]
do
  some-stuff  
done

因此,pgrep将查找任何nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1; /etc/init.d/nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

总结

以上是编程之家为你收集整理的ubuntu – 有没有办法检测nginx何时完成正常关闭?全部内容,希望文章能够帮你解决ubuntu – 有没有办法检测nginx何时完成正常关闭?所遇到的程序开发问题。

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入编程之家官方QQ群:1065694478
编程之家官方公众号

微信公众号搜索 “ 程序精选 ” ,选择关注!

微信公众号搜索 “ 程序精选 ”
精选程序员所需精品干货内容!