我想知道是否有任何方法可以从 OOM 杀手那里捕捉到 sigkill。我有一个任务队列,并且每隔一段时间就会创建一个被 OOM 杀死的庞大任务。这个:
catch Exception as ex:
# clean up!
不起作用,因为 SIGKILL 无法被捕获。所以........在 SIGKILL 之后有什么策略可以清理吗?我可以分叉并观察子进程吗?如果是这样,子进程打开的任何资源都必须由父进程提前知道吗?或者我可以做一些版本
ps -ef | grep <child pid> | xargs kill -9 (you get the idea...)
目前,如果我在 OOM 终止后不进行清理,我会留下大量子进程和其他事情,这只会在重试任务时使情况变得更糟,并且很快,服务器就无法访问。
最后,是否足够做:
kill -9 <process id>
测试这个确切的情况?
非常感谢!