我想知道是否有办法捕获OOM killer发送的sigkill信号。我有一个任务队列,偶尔会创建一个巨大的任务,被OOM杀死。以下是代码:
catch Exception as ex:
# clean up!
无法使用,因为SIGKILL不能被捕获。那么有没有任何清理SIGKILL后果的策略?我可以fork进程并监视子进程吗?如果可以,父进程是否必须事先知道子进程打开的所有资源?还是我只需要做某种版本的
ps -ef | grep <child pid> | xargs kill -9 (you get the idea...)
目前,如果我在OOM kill之后不进行清理,就会留下大量的子进程和其他一些东西,这样当任务重试时情况只会变得更糟,很快服务器就无法访问。
最后,仅仅执行以下操作是否足够:
kill -9 <process id>
要测试这种确切情况吗?
非常感谢!