如何为centos中的守护进程生成核心转储?

时间:2010-10-14 20:49:42

标签: linux centos coredump

我有一些守护进程偶尔会崩溃,我想知道如何启用核心转储代。 我知道默认情况下linux ulimit的核心转储是零,所以如果我想查看正在运行的进程的核心转储,我需要将其设置为无限制。 但我想要做的是为在root帐户下运行的守护程序进程生成核心转储。 任何人都可以建议我如何配置系统?提前谢谢。

2 个答案:

答案 0 :(得分:3)

我知道,这是一个多年前的问题,但它在谷歌搜索中找到了我,并且接受的答案是不完整的(至少对Centos而言)。

对于RHEL派生系统,大多数守护程序都有一个init脚本,该脚本提供一个名为:

的文件
/etc/sysconfig/{daemon_name}

例如,对于apache,它是:

/etc/sysconfig/httpd

在守护程序启动期间,init脚本会读取这些文件中的环境变量,这些变量用于配置运行守护程序的环境。

要启用核心转储,请添加以下行:

export DAEMON_COREFILE_LIMIT='unlimited'

编辑此文件后重新启动守护程序。

您可能需要做的另一件事是更改内核核心转储文件名模板。默认情况下,核心转储将在当前工作目录中生成,并具有名称' core'。这不是很有用,因为它们会相互覆盖,并且在守护进程的情况下,它的工作目录可能是(a)未知(b)不可写。改变它:

sysctl -w kernel.core_pattern=/tmp/core_%e_%p

该设置是我的建议,您可以更改正在使用的目录的路径以及模式。上面的模式将包含可执行文件名和pid。

要更永久地设置它,请编辑文件/etc/sysctl.conf并插入:

kernel.core_pattern=/tmp/core_%e_%p

答案 1 :(得分:1)

我相信:

ulimit -c unlimited

...或某些值将允许您创建这些转储。另外,您可以查看以下网页了解详情:how to enable coreLinux FAQ