我有一些守护进程偶尔会崩溃,我想知道如何启用核心转储生成。我知道在linux上,内核转储的ulimit默认情况下是零,所以如果我想看到我正在运行的进程的内核转储,我需要将它设置为ulimit。但我想要做的是为在root帐户下运行的守护进程生成核心转储。有没有人能建议我如何配置系统?提前谢谢你。
发布于 2010-10-15 04:53:16
我相信类似这样的东西:
ulimit -c unlimited..。或者一些值将允许您创建这些转储。此外,您可能希望查看以下网页以获取更多详细信息:how to enable core和Linux FAQ
发布于 2014-05-12 13:55:37
我知道,这是一个多年前的问题,但我在谷歌上搜索了一下,得到的答案是不完整的(至少对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_%phttps://stackoverflow.com/questions/3937434
复制相似问题