在CentOS 6上启用核心文件

时间:2014-05-02 19:20:55

标签: centos core centos6 ulimit sysctl

我正在尝试在运行CentOS的计算机上启用核心文件;然而,我所尝试的并没有产生核心文件......这就是我所做的:

将以下两行添加到/etc/security/limits.conf

*     hard    core    unlimited
*     soft    core    unlimited

/etc/sysconfig/init添加了以下行:

DAEMON_COREFILE_LIMIT='unlimited

/etc/profile添加了以下行:

ulimit -c unlimited > /dev/null 2>&1

/etc/sysctl.conf添加了以下行:

kernel.core_pattern = '/srv/core/%p_%t.core'
fs.suid_dumpable = 1

我确保/srv/core存在且具有777权限。我执行init 6重启操作系统。系统重新启动后,我执行了以下C脚本以尝试生成核心文件:

#include <sys/types.h>
#include <unistd.h>
#include <signal.h>

int main(int argc, char **argv) {
  kill(getpid(), SIGQUIT);
}

输出只是Quit,而我希望看到Quit (core dumped);它显然不会产生核心文件:(

我错过了什么或做错了什么?在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

看起来好像核心文件是在CentOS 6上默认生成的,但由&#34; ABRT&#34;处理。 service,默认情况下可以将它们写入/var/spool/abrt目录。无论如何,这就是VM安装对我有用的方式。为了说明这一点,我做了以下几点:

  1. &#34;睡觉50&amp;&#34;
  2. &#34; kill -SIGSEGV&#34;
  3. &#34; abrt-cli list&#34;
  4. 识别&#34;目录:&#34;符合我的segfaulted睡眠过程和cd到它的行
  5. 发现存储在那里的coredump文件
  6. SIGQUIT似乎也会生成核心。

    鉴于这些,我确认abrt服务正在运行,我看看我是否有/var/spool/abrt中的先前条目掩盖了新的核心文件(我认为{{1}试图避免重复的条目,你可能想要)。不过,我不确定是否有任何其他配置会有所帮助或伤害。

答案 1 :(得分:1)

Just change: 
kernel.core_pattern = '/srv/core/%p_%t.core' to kernel.core_pattern = /srv/core/%p_%t.core without "'" and it will work...