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

如何在 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

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);
}

它不会生成核心文件:(

我遗漏了什么或做错了什么?提前感谢您的帮助!

答案1

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

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

root     hard    core    unlimited
root     soft    core    unlimited

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

getenforce

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

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

答案2

问题可能是因为 core_pattern 的路径被引用了。请尝试以下方法:

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

相关内容