pythonsigkill捕捉策略

我想知道是否有办法从OOM杀手那里抓住sigkill。 我有一个任务队列,而且每创build一个这个被OOM杀死的巨大任务。 这个:

catch Exception as ex: # clean up! 

不起作用,因为SIGKILL不能被捕获。 所以……..是否有任何策略在SIGKILL之后清理? 我可以分叉,并观看subprocess? 如果是这样,那么由父母开放的任何资源必须事先由父母知道? 或者我可以只做一些版本

 ps -ef | grep <child pid> | xargs kill -9 (you get the idea...) 

目前,如果我在OOM杀死后没有清理干净,我会留下大量的subprocess和其他事情,这些只会在任务重试时变得更糟,并且很快就会导致服务器无法访问。

最后,这样做就足够了:

 kill -9 <process id> 

testing这个确切的情况?

非常感谢!

SIGKILL本身不能被困住。

http://en.wikipedia.org/wiki/Unix_signal#SIGKILL

SIGKILL

SIGKILL信号被发送到一个进程,使其立即终止(kill)。 与SIGTERM和SIGINT相反,该信号不能被捕获或忽略,接收过程在接收到该信号时不能进行清理。

要做的最好的事情是下一次你的流程启动,寻找任何需要清理的东西。

是的, kill -9 <pid>会向进程发送一个SIGKILL。 (准确地说,它发送第9个信号 – 只是SIGKILL在几乎所有的系统上都有9号码,你也可以写kill -KILL <pid> ,让你用名字而不是数字来指定信号一个便携的方式。)

Linux OOM杀手通过发送SIGKILL工作。

杀死选定的进程,OOM杀手提供一个SIGKILL信号。

杀-9 < – 工程