gpt4 book ai didi

crash - 崩溃后不会创建进程核心转储

转载 作者:行者123 更新时间:2023-12-02 02:45:40 26 4
gpt4 key购买 nike

我已配置系统配置来创建进程核心转储。

以下是我的配置。

/etc/sysctl.conf
kernel.core_uses_pid = 1
kernel.core_pattern = /var/core/core.%e.%p.%h.%t
fs.suid_dumpable = 2

/etc/security/limits.conf
* soft core unlimited
root soft core unlimited

以下是我生成进程核心转储的步骤。

1) 我重新启动了 mysql 服务并执行了命令“kill -s SEGV <mysql_pid> ”,然后我在/var/core 位置获得了核心转储文件。

2) 然后我开始了我的服务 mysql 说 "/etc/init.d/mysql start""service mysql start" 。现在,如果我给出“kill -s SEGV <mysql_pid> ”,则不会创建核心转储文件。

3) 要再次获取崩溃文件,我必须重新启动 mysql 服务,然后只有当我给出“kill -s SEGV <mysql_pid> ”时,我才能获取核心转储文件。

谁能帮我解决这个问题吗?

最佳答案

首先,您可以通过运行以下命令来验证 MySQL 进程的核心转储是否已禁用:

# cat /proc/`pidof -s mysqld`/limits|egrep '(Limit|core)'
Limit Soft Limit Hard Limit Units
Max core file size 0 unlimited bytes

“软”限制是要寻找的限制,在这种情况下为零意味着核心转储被禁用。

默认情况下,/etc/security/limits.conf 中设置的限制仅适用于以交互方式启动的程序。您可能必须在 mysqld 启动脚本中包含“ulimit -c unlimited”才能永久启用核心转储。

如果幸运的话,您可以为当前 shell 启用 coredump,并使用其 init.d 脚本重新启动守护进程:

# ulimit -c unlimited
# /etc/init.d/mysql restart
* Stopping MySQL database server mysqld [ OK ]
* Starting MySQL database server mysqld [ OK ]
* Checking for tables which need an upgrade, are corrupt
or were not closed cleanly.
# cat /proc/`pidof -s mysqld`/limits|egrep '(Limit|core)'
Limit Soft Limit Hard Limit Units
Max core file size unlimited unlimited bytes

如您所见,这适用于我系统上的 MySQL。

请注意,这不适用于 Apache 等应用程序,它会在内部调用 ulimit 来禁用核心转储,不适用于使用 upstart 的 init.d 脚本。

关于crash - 崩溃后不会创建进程核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26437058/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com