【问题标题】:SIGKILL signal HandlerSIGKILL 信号处理程序
【发布时间】:2011-04-23 22:45:47
【问题描述】:

我需要在收到任何终止命令(如 SIGTERM 和 SIGKILL)时写入日志文件。

我可以注册 SIGTERM 但如何处理 SIGKILL 信号?

【问题讨论】:

  • 推荐阅读:Trying to handle SIGKILL
  • @Ben Voigt:我很犹豫将其标记为“如何优雅地处理 SIGKILL 信号”的副本,因为该问题包含错误信息,表明 Control-C 实际上发送了 KILL 信号它发送一个 INTR 信号。
  • @Omnifarious:该问题中的答案不会犯这样的错误,并且该问题的答案将与现有答案100%冗余。这对我来说已经足够了。
  • 这就是为什么我不鼓励人们使用kill -9,除非他们绝对必须这样做。进程应该有机会清理它们,除非您认为它们是恶意的,而不是简单的脱轨或不需要的。

标签: linux signals sigkill


【解决方案1】:

你不能,至少不能因为进程被杀死。

可以做的是安排父进程监视子进程的死亡,并采取相应的行动。任何像样的过程监督系统,例如daemontools,都内置了这样的设施。

【讨论】:

  • 使用父进程是最简单的,但不是必需的。任何持有管道或 fifo 另一端的进程都会在其对等方被终止时收到通知。
  • @Ben:管道可以通过进程死亡以外的其他方式关闭,因此不太可靠。但是,如果您不控制父进程,那可能是您唯一的选择。 (daemontools 有一个 fghack 程序在这个前提下工作。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多