生成 coredump 过去工作正常,但切换到 systemd 后,我只看到该消息
Aborted (core dumped)
但没有core
生成文件。和systemd有关系吗?
(背景:我原来的问题可以找到这里。感谢 shaiba 找到了解决方案。我提供此问答,以便其他人如果已经知道这是一个 systemd 问题,可以更轻松地找到解决方案。)
答案1
默认情况下,systemd 将核心转储写入日志。coredumpctl list
列出丢失的核心转储。
文件存储在/var/lib/systemd/coredump
.用于coredumpctl dump
访问核心文件。
例如,如果 PID 为 10666,则可以使用
coredumpctl dump 10666 --output /tmp/core.10666
与 systemd 无关,但如果仍然无法正常工作,请确保关闭 coredump 限制:
# ulimit -c unlimited
还要验证您是否可以写入工作目录。
答案2
内核/proc/sys/
设置由 管理sysctl(8)
,系统默认设置/usr/lib/sysctl.d/
由/etc/sysctl.conf
或覆盖/etc/sysctl.d/
。它们定义文件的名称core
等。不是他们写的(除非内核配置为允许从 SUID 二进制文件进行核心转储)。书写受 控制ulimit(1)
,即ulimit -c unlimited
没有限制。在 core下systemd(1)
由其控制下的东西生成的文件被写入日志,可以通过coredumpctl(1)
.普通用户的东西没有改变。
systemd
只是在正确的启动点systemd-sysctl.service
运行,并处理更改后的重新运行。sysctl