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

假设一个(非常)大的进程正在崩溃和倾倒核心,并且我们知道其他信息的原因(可能是断言信息,也许是别的东西)。

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

例如,会杀死一个核心转储过程的-9中断核心文件的代?

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

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

(例如,假设我是https://stackoverflow.com/questions/18368242/how-to-bypass-a-2tb-core-dump-file-system-limit中的请求者,并且不想浪费5 -6 TB的磁盘空间:))

一般来说:不,没有办法可靠地杀死一个coredump。

这是说有可能(至less在Linux)商业* NIX可能没有办法

可能的原因是内核的3.x系列能够中断文件写入。 一种可能是find正在进行转储的线程,并重复发送SIGKILL,直到成功。

此修补程序系列将问题修复到某个级别。

其他可能性是使用coredump_pattern的替代语法。 该手册说,自2.6.19,而不是一个模式,你可以使用一个pipe道和一个程序(与params),将处理转储。 你会有控制哪个转储将被写入到哪里(/ dev / null是你的无用内核的明显候选人)。

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

检查这个链接,这可能会有所帮助

https://publib.boulder.ibm.com/httpserv/ihsdiag/coredumps.html

它看起来像你可以运行ulimit-c(假设你使用bash)来限制核心转储大小。

请参阅: https : //askubuntu.com/questions/220905/how-to-remove-limit-on-core-dump-file-size

http://ss64.com/bash/ulimit.html