首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在centos中为守护进程生成核心转储?

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

Stack Overflow用户
提问于 2010-10-15 04:49:42
回答 2查看 11.5K关注 0票数 3

我有一些守护进程偶尔会崩溃,我想知道如何启用核心转储生成。我知道在linux上,内核转储的ulimit默认情况下是零,所以如果我想看到我正在运行的进程的内核转储,我需要将它设置为ulimit。但我想要做的是为在root帐户下运行的守护进程生成核心转储。有没有人能建议我如何配置系统?提前谢谢你。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-15 04:53:16

我相信类似这样的东西:

代码语言:javascript
复制
ulimit -c unlimited

..。或者一些值将允许您创建这些转储。此外,您可能希望查看以下网页以获取更多详细信息:how to enable coreLinux FAQ

票数 1
EN

Stack Overflow用户

发布于 2014-05-12 13:55:37

我知道,这是一个多年前的问题,但我在谷歌上搜索了一下,得到的答案是不完整的(至少对Centos而言是这样)。

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

代码语言:javascript
复制
/etc/sysconfig/{daemon_name}

例如,对于apache,它是:

代码语言:javascript
复制
/etc/sysconfig/httpd

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

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

代码语言:javascript
复制
export DAEMON_COREFILE_LIMIT='unlimited'

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

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

代码语言:javascript
复制
sysctl -w kernel.core_pattern=/tmp/core_%e_%p

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

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

代码语言:javascript
复制
kernel.core_pattern=/tmp/core_%e_%p
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3937434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档