首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当操作系统关闭时,服务管理器如何知道它应该向其服务发送SIGTERM和SIGKILL?

当操作系统关闭时,服务管理器如何知道它应该向其服务发送SIGTERM和SIGKILL?
EN

Unix & Linux用户
提问于 2018-12-18 05:38:26
回答 1查看 255关注 0票数 1

斯蒂芬最好的回答之一

当操作系统关闭时,进程将使用SIGTERMSIGKILL关闭,但这些信号并不来自内核(或者不是直接调用pid为0或负pid的kill()将导致内核向多个进程发送信号)。它们来自终止其服务的服务管理器,以及各种作为系统管理机制一部分的所有应用程序模式程序:例如killprocs范斯莫伦堡rc脚本killprocsOpenRC脚本systemd-shutdown程序

当操作系统关闭时,

  • 服务经理如何知道它应该终止其服务?服务管理器是否通过接收SIGKILL或SIGTERM或来自内核或某些进程的其他信号来通知?
  • 类似地,各种作为系统管理机制一部分的应用程序模式程序如何知道它们应该发送SIGTERM和SIGKILL呢?

谢谢。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-12-18 05:49:14

服务管理器知道它应该终止其服务,因为系统管理员要求它停止或重新启动系统。当管理员运行reboot,或者用户在他/她的桌面环境中选择相应的选项时,init进程被告知重新启动(此时不是内核)。在请求内核实际重新启动之前,init进程将处理配置好的所有操作。

最后一条沟,杀死-一切阶段是关闭过程的一部分:一旦关闭过程要求所有正在运行的服务停止,它通常等待一段时间,然后杀死任何剩余的进程。

不同的init系统都有不同的实现。使用sysvinit,停止或重新启动是一个运行级的转换,首先要求运行的init切换到适当的运行级别(详细信息请参见这个telinit命令页 )。使用systemd,它是一个目标,最终运行这个systemd-halt服务

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/489610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档