- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我想知道是否有任何方法可以从 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 -9 <process id>
要测试这个确切的情况?
非常感谢!
最佳答案
SIGKILL 就其本质而言不能被困住。
见 http://en.wikipedia.org/wiki/Unix_signal#SIGKILL :
SIGKILL
The SIGKILL signal is sent to a process to cause it to terminate immediately (kill). In contrast to SIGTERM and SIGINT, this signal cannot be caught or ignored, and the receiving process cannot perform any clean-up upon receiving this signal.
最好的办法是下次启动流程时,查找需要清理的任何内容。
是的,kill -9 <pid>
将向进程发送 SIGKILL。 (准确地说,它发送第 9 个信号 - 恰好 SIGKILL 在几乎每个系统上都有数字 9。您也可以编写 kill -KILL <pid>
,它可以让您以可移植的方式通过名称而不是数字来指定信号.)
关于python sigkill 捕捉策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732683/
这个问题在这里已经有了答案: Use of undefined constant SIGTERM - > assumed 'SIGTERM' (1 个回答) 关闭 4 年前。 为什么我在某些 PHP
我有一个守护程序应用程序,它启动几个 3rd 方可执行文件(所有的都是封闭源代码和不可修改的)。 我想让所有子进程在父进程因任何原因退出时自动终止( 包括崩溃 )。 目前,我正在使用 prctl要实现
我在 iPhone 模拟器中构建并运行一个项目。我通过按主页按钮将其发送到后台。然后我双击主页按钮在后台找到我的应用程序并点击它。它变得活跃并且应用程序继续运行。在这里,无论我重复多少次,我都没有问题
我即将完成应用程序的开发。它有一个项目名称,但现在我即将将其发布到应用程序商店,我想更改名称。在项目文件检查器中执行此操作后,它向我展示了可以重命名的内容。我没有取消选择任何东西。重命名应用程序后,我
我是编码新手,我不确定为什么这段代码会出现此错误:运行时错误 (SIGKILL)。谢谢。该代码是朴素的 Dijkstra 算法。此代码在成批的测试用例上运行。因此是最外层的循环。样本输入:33 21
SIGKILL 是否在 unix 线程终止时被调用? 我正在监视一个可能正在使用线程池的应用程序,并使用 printf 注册一个 SIGKILL 处理程序,但没有显示任何内容。我试图了解是否涉及线程池
什么是 SIGKILL 权限策略? 我假设我无法在非 root 用户上运行时杀死内核或其他用户的某些内容,但我还没有找到任何关于此的文档。 最佳答案 来自 http://linux.die.net/m
我在 ios 模拟器中试验我的应用程序时发现,当我从多任务栏中删除它然后重新运行它时,它会产生 SIGKILL 信号。 (我通过停止该应用程序,运行另一个应用程序,然后从多任务栏中删除第一个应用程序并
即使在发出 SIGKILL 之后我也遇到过这种行为使用 kill -9该过程没有终止。这里有问题的命令是 cat # ps -ef | grep 19275 root 19275 1
如果 linux 进程正在等待 I/O(即它处于 SLEEP 状态)并且针对它发出 SIGKILL 信号,则在终止时( STOPPED 状态)是否会通过RUNNING 或READY 状态? 换句话说,
我试图弄清楚应用程序在收到 SIGTERM 时,在发送 SIGKILL 之前有多少时间退出? 我对这些信号知之甚少。我已经在 Stackoverflow 上的建议答案中阅读了其中的一些内容,但我无法瞥
我需要在收到任何终止命令(如 SIGTERM 和 SIGKILL)时写入日志文件。 我可以注册 SIGTERM 但如何处理 SIGKILL 信号? 最佳答案 你不能,至少不能因为进程被杀死。 您可以做
我正在开发一个使用共享内存的程序。所述程序的多个实例将连接到现有程序或重新创建它,并在没有其他进程时将其返回给操作系统,或者只是将其分离并终止。我想到了使用一个简单的计数器来跟踪有多少进程使用它。 我
我想知道是否有任何方法可以从 OOM killer 那里捕捉到 sigkill。我有一个任务队列,并且每隔一段时间就会创建一个被 OOM 杀死的庞大任务。这个: catch Exception as
我在 Windows 上使用 Eclipse,以及用于 Python 开发的 PyDev 插件。当我使用“运行”启动我的应用程序时,它会生成一个新的 Python (CPython) 实例。当我使用“
我写了下面的代码,目的如下:子进程向父进程发送 SIGKILL 信号,然后父进程将使用处理程序来处理它。处理程序只是增加计数器。 int counter = 0;
我有 Xcode 4.2,每当我在模拟器中运行我的应用程序并按下停止调试按钮时,我都会收到一条 sigkill 消息。断点在 main.m 文件的这一行停止: int retVal = UIAppli
当我在模拟器中启动应用程序时,Xcode 就会切换到 main.m,大多数情况下我都会暂时看到此错误,但奇怪的是,错误会暂时消失,然后应用程序启动。 对我来说,Xcode 似乎困惑了一段时间,然后它意
当我在酒店时,他们的 Wifi 显然是通过非常非常慢的互联网连接连接到互联网的。事实上它可能是基于调制解调器的。 结果是我的应用程序的 HTTP GET 请求似乎导致 iOS 向我的应用程序发送 SI
我的机器上没有收到 SIGKILL 错误,在 ideone.com 在线编译器上也没有虽然它在 spoj 机器上给出了一个 SIGKILL,但无法找出原因编辑:该程序需要使用不到 256MB 的数据,
我是一名优秀的程序员,十分优秀!