内容简介:所属分类:Ansible
- A+
所属分类:Ansible 运维技术
博主会将与Nginx有关的知识点总结到"nginx短篇系列"文章中,如果你对nginx不是特别了解,请 按照顺序 阅读"nginx短篇系列",以便站在前文的基础上理解新的知识点。
近期会比较忙,更新时间可能不会特别稳定,三四天才来看一看也有可能,还是请大家关注公众号吧,如果有更新会收到通知。
通过前文章我们已经知道,当我们需要让nginx重新打开日志文件时,需要使用kill命令向nginx的master进程发送USR1信号,或者执行"nginx -s reopen"命令,它们的效果是完全一样的,那么你可能会问,"nginx -s"命令除了能够使用reopen,不是还能够使用reload、stop和quit么,那么reload、stop、quit有没有完全等效的信号呢?还真有,这些信号的对应关系如下:
reopen对应USR1信号 reload对应HUP信号 stop对应TERM信号或者INT信号 quit对应QUIT信号
通过上述对应关系我们可以推断出,"nginx -s reload"命令与"kill -HUP NginxMasterPid"命令的作用是一样的。
之前说过,master进程是负责管理worker进程的,其实,当我们向master进程发送信号时,master进程就会根据捕捉到的信号来管理worker进程,那么,我们都能向master进程发送哪些信号呢?我们能向master进程发送如下信号:
TERM或者INT:表示立即停止nginx QUIT:表示优雅的停止nginx HUP:重载配置文件 USR1:重新打开日志文件 USR2:热升级nginx程序 WINCH:优雅的关闭相应的worker进程
可以看到,我们通常可以手动的向master进程发送上述信号,而前四种信号又可以使用"nginx -s"命令代替,至于USR2信号和WINCH信号,就只能使用kill命令发送了,USR2信号和WINCH信号在热部署Nginx时(平滑升级编译安装的nginx时)会用到,等总结相关文章时再行介绍吧。
其实,不仅master进程可以直接接收信号,work进程也可以直接接收信号,但是通常情况下,我们不应该手动的向worker进程直接发送信号,而是应该通过master进程来管理他们,虽然我们不应该向work进程发送信号,但是此处还是列出worker进程可以接收到的信号,以便了解它们,worker进程可以接收的信号如下:
TERM信号或INT信号 QUIT信号 USR1信号 WINCH信号
如果因为某些原因,worker进程意外终止了,master进程会创建一个新的worker进程,以保证有对应的worker进程可以使用,当子进程worker进程终止时,会向master父进程发送CHLD信号,当master进程收到CHLD信号以后,就会知道对应的worker进程退出了,此时,master进程会创建一个新的worker进程,演示过程如下:
假设当前正常情况下,master进程号为12609,两个worker进程的进程号为12610、12611 # ps -ef | grep nginx root 12609 1 0 17:17 ? 00:00:00 nginx: master process nginx nobody 12610 12609 0 17:17 ? 00:00:00 nginx: worker process nobody 12611 12609 0 17:17 ? 00:00:00 nginx: worker process root 12613 9361 0 17:17 pts/1 00:00:00 grep --color=auto nginx 使用kill命令终止pid为12610的worker进程 # kill -INT 12610 再次查看nginx进程,会发现master进程自动创建了一个pid为12614的worker进程。 # ps -ef | grep nginx root 12609 1 0 17:17 ? 00:00:00 nginx: master process nginx nobody 12611 12609 0 17:17 ? 00:00:00 nginx: worker process nobody 12614 12609 0 17:17 ? 00:00:00 nginx: worker process root 12624 9361 0 17:17 pts/1 00:00:00 grep --color=auto nginx
通过上述描述,master进程和worker进程的关系是否更加清晰了呢?
我的微信公众号
关注"实用运维笔记"微信公众号,当博客中有新文章时,可第一时间得知哦~
以上所述就是小编给大家介绍的《nginx短篇(9):信号》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 树莓派基础-模拟信号和数字信号的区别
- xenomai内核解析之信号signal(二)---xenomai信号处理机制
- 没信号也可救你命:苹果新专利让iPhone无信号也可充当紧急信标
- 信号量
- flask---信号
- Python信号处理
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python基础教程
[挪] Magnus Lie Hetland / 袁国忠 / 人民邮电出版 / 2018-2-1 / CNY 99.00
本书包括Python程序设计的方方面面:首先从Python的安装开始,随后介绍了Python的基础知识和基本概念,包括列表、元组、字符串、字典以及各种语句;然后循序渐进地介绍了一些相对高级的主题,包括抽象、异常、魔法方法、属性、迭代器;此后探讨了如何将Python与数据库、网络、C语言等工具结合使用,从而发挥出Python的强大功能,同时介绍了Python程序测试、打包、发布等知识;最后,作者结合......一起来看看 《Python基础教程》 这本书的介绍吧!