我有一些守护进程偶尔崩溃,我想知道如何启用核心转储世代。 我知道,默认情况下,在Linux的ulimit核心转储是零,所以我需要将其设置为无限,如果我想查看我正在运行的进程的核心转储。 但是我想要做的是为在root帐户下运行的守护进程生成核心转储。 任何人都可以告诉我如何configuration系统? 先谢谢你。
我相信这样的事情:
ulimit -c unlimited
…或某些价值将允许你创建这些转储。 此外,你可能想看看下面的网页更多的细节: 如何启用核心和Linux常见问题
我知道,这是一个长达数年的问题,但它在谷歌搜索上找到了我,并且接受的答案是不完整的(对于Centos至少)。
对于RHEL派生系统,大多数守护进程都有一个初始化脚本,它会生成一个名为:
/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