我试图在运行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