Unix(或Linux)中是否有停止正在进行的核心转储的机制?

Mik*_* G. 15 linux unix dump

假设一个(非常)大的进程正在崩溃和转储核心,我们从其他信息(可能是断言消息,也可能是其他信息)中知道原因。

有没有办法阻止核心转储完全生成,因为在这种情况下它是一种浪费?

例如,核心转储过程的 kill -9 会中断核心文件的生成吗?

显然,如果我们提前知道我们不想要核心转储,我们可以适当地设置 ulimit 或使用操作系统的各种核心文件控制实用程序。

但这个问题是关于“核心转储已经在进行中”的阶段......

(例如,假设我是/sf/ask/1285776971/ 中的请求者 并且不想浪费 5 -6 TB 的磁盘空间 :) )

小智 8

通常:不,没有办法可靠地杀死核心转储。

话虽如此,但商业 *NIX 有可能(至少在 linux 中)可能没有办法

可能性在于3.x系列内核能够中断文件写入。一种可能性是找到正在执行转储的线程并重复向其发送 SIGKILL 直到成功。

这个补丁系列在一定程度上解决了这个问题。

另一种可能性是使用 coredump_pattern 的替代语法。该手册说,从 2.6.19 开始,您可以使用管道和处理转储的程序(带有参数)而不是模式。因此,您将可以控制将哪个转储写入何处(/dev/null 是您无用内核的明显候选者)。

这个补丁也值得关注:http : //linux.derkeiler.com/Mailing-Lists/Kernel/2010-06/msg00918.html