我正在尝试在运行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)
;它显然不会产生核心文件:(
我错过了什么或做错了什么?在此先感谢您的帮助!
答案 0 :(得分:2)
看起来好像核心文件是在CentOS 6上默认生成的,但由&#34; ABRT&#34;处理。 service,默认情况下可以将它们写入/var/spool/abrt
目录。无论如何,这就是VM安装对我有用的方式。为了说明这一点,我做了以下几点:
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...