假设一个(非常)大的进程正在崩溃和转储核心,我们从其他信息(可能是断言消息,也可能是其他信息)中知道原因。
有没有办法阻止核心转储完全生成,因为在这种情况下这是一种浪费?
例如,核心转储进程的 kill -9 会中断核心文件的生成吗?
显然,如果我们提前知道我们不想要核心转储,我们可以适当地设置 ulimit 或使用操作系统的各种核心文件控制实用程序。
但这个问题是关于“核心转储已经在进行中”阶段......
(例如,假设我是 https://stackoverflow.com/questions/18368242/how-to-bypass-a-2tb-core-dump-file-system-limit中的请求者 并且不想浪费 5 -6 TB 的磁盘空间 :) )
一般来说:不,没有办法可靠地杀死核心转储。
话虽如此,商业 *NIX 有可能(至少在 linux 中)可能没有办法
可能性在于内核的3.x系列能够中断文件写入。一种可能性是找到正在执行转储的线程并重复向它发送 SIGKILL 直到它成功。
这个补丁系列在一定程度上修复了这个问题。
其他可能性是使用 coredump_pattern 的替代语法。该手册说,从 2.6.19 开始,您可以使用管道和程序(带有参数)来处理转储,而不是使用模式。因此,您将可以控制将哪个转储写入何处(/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