【问题标题】:How to stop SIGTERM and SIGKILL?如何停止 SIGTERM 和 SIGKILL?
【发布时间】:2017-03-01 15:19:30
【问题描述】:

我需要运行一个庞大的进程,该进程将运行 10 多分钟。我最大化了max_execution_time,但在我的错误日志中我得到一个SIGTERM,然后是一个SIGKILL。

我读过一些关于 SIGTERM 和 SIGKILL 的信息,它们来自守护进程,但我不知道如何阻止它发生。我只需要禁用它一晚。

【问题讨论】:

  • 你无法停止 sigkill。时期。这就是 sigkill 的全部意义——能够关闭原本不会关闭的进程。
  • 我发现 sth no,所以这一切:reddit.com/r/linux/comments/8fbtw/… 是不可能的?
  • 你如此绝望以至于愿意构建一个定制的被黑内核?祝你好运......
  • 嗯,我现在真的不知道任何其他解决方案。我需要脚本运行比现在更长的时间,如果 sigkill 只是因为它运行了很长时间而杀死它,那么我不知道

标签: php timeout sigkill sigterm


【解决方案1】:

与其试图忽略信号,不如找出发送信号的人以及原因。如果您从命令行启动 php,则没有人会发送该信号,并且您的脚本时间将一直

但是,如果您实际上是作为对 http 请求的响应而启动此过程,则可能是 FastCGI 管理器的 Web 服务器限制了它等待脚本完成的时间。它也可能简单地终止脚本,因为客户端连接(用户浏览器和 http 服务器之间)已终止。

因此,您应该问自己一个重要的问题 - 该信号的来源是什么以及如何增加此超时时间。还请提供有关如何启动此脚本以及正在运行的平台的所有详细信息。

【讨论】:

  • 嘿,你是对的。在调查了 apache2 日志中的 error_log 之后,我发现 sigterm 是为了别的东西。我不知道它到底杀死了什么,但事实上,php脚本一直在执行。
  • 是的,我想我真的只是用“ignore_user_abort”php函数解决了它。可能真的只是客户端超时。
猜你喜欢
  • 2013-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 2011-02-26
  • 2011-12-15
  • 2017-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多