【问题标题】:Enabling core files on CentOS 6在 CentOS 6 上启用核心文件
【发布时间】:2014-06-19 13:41:40
【问题描述】:

我正在尝试在运行 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);它显然不会产生核心文件:(

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

【问题讨论】:

    标签: centos core centos6 ulimit sysctl


    【解决方案1】:

    看起来核心文件是在 CentOS 6 上默认生成的,但由“ABRT”服务处理,默认情况下可能会将它们写入/var/spool/abrt 目录。无论如何,这就是我安装 VM 的方式。为了说明这一点,我做了以下操作:

    1. “睡眠 50 和”
    2. “杀死-SIGSEGV”
    3. “abrt-cli 列表”
    4. 确定与我的段错误睡眠进程匹配的“目录:”行并 cd 到它
    5. 找到存储在那里的核心转储文件

    SIGQUIT 似乎也生成了一个核心。

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

    【讨论】:

      【解决方案2】:
      只需更改:
      kernel.core_pattern = '/srv/core/%p_%t.core' 到 kernel.core_pattern = /srv/core/%p_%t.core 没有“'”,它会工作......

      【讨论】:

      • 我会相信你的话......我已经处理了这个问题 2 1/2 年(目前不知道我做了什么来让它工作,或者我什至做了) - 哈哈
      猜你喜欢
      • 2012-08-28
      • 2011-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 2020-12-06
      • 1970-01-01
      相关资源
      最近更新 更多