如何在CentOS 6上启用核心文件

我试图在运行CentOS 6的机器上启用核心文件; 然而,我没有尝试过已经产生了核心文件…这是我所做的:

将以下两行添加到/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添加到/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); } 

它不会产生核心文件:(

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

如果你的程序以root身份运行,那么你添加的limits.conf条目将不适用。 “*”适用于除root之外的所有用户。

如果您的程序以root身份运行,请添加以下内容:

 root hard core unlimited root soft core unlimited 

另外,确保SELinux不阻止写入核心转储。

 getenforce 

如果SELinux正在运行,请validation审计是否正在运行,尝试获取核心转储,然后执行以下操作:

 grep -i denied /var/log/audit/auditd 

这个问题可能是core_pattern引用的path。 试试这个:

 kernel.core_pattern = /srv/core/%p_%t.core