核心转储文件出现然后消失

时间:2014-03-26 19:40:07

标签: linux core

我有一个内存占用相当大的程序,大约30GB,核心转储。

当程序正在转储(顶部显示为D-Defunct)时,转储文件是可见且可读的。它位于预期的目录中,具有预期的文件名格式。一切都在本地磁盘上。我甚至可以在gdb中加载文件。显然,转储需要花费几分钟来处理这个大小的进程。

文件最多大约13GB,然后进程退出......核心文件消失了!噗。

平台:Redhat EL6(2.6.32-220.4.2.el6.x86_64)

文件系统空间充足,超过500GB免费。

$ df .
Filesystem           1K-blocks      Used Available Use% Mounted on
blahblahblah         834006872 270024424 521617316  35% /data

ulimit没有显示任何适用的限制:

$ ulimit -a
core file size          (blocks, -c) unlimited
file size               (blocks, -f) unlimited
<snipped>

编辑:较小的核心转储不会消失。包括同一个程序。这似乎特定于巨大的核心转储。

tune2fs 1.41.12 (17-May-2010)
<snip>
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      1020
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
<snip>

1 个答案:

答案 0 :(得分:1)

假设您正在使用ext2 / ext3 / ext4,您可能会面临文件系统最大文件大小的限制。 This page(警告:俄语)告诉我们,ext *文件系统中最大文件大小的有效值范围的下限等于 16 GB (确切的值取决于您的驱动器的群集大小)。因此,我们不能排除您已超出此限制的事实。

有很多工具可以帮助您找出哪个进程擦除了您的文件:lsofinotifyauditd。它们都在你的内核中得到支持,它们都是不同的,现在很难说它们中哪一个最适合你。