Linux系统中查看core dump需区分systemd-coredump(用户态进程)与kdump(内核崩溃):运行systemctl status systemd-coredump确认服务状态,journalctl -u systemd-coredump查日志,coredumpctl list验证捕获;kdump则用systemctl status kdump及cat /sys/kernel/kexec_crash_loaded检查。

Linux 系统中查看核心转储(core dump)相关服务的运行状态与日志,关键在于区分两类机制:一是传统 systemd-coredump 服务(负责捕获、存储和管理进程崩溃时生成的 core 文件),二是内核级的 kdump 服务(用于系统内核崩溃后的内存转储,属 crash kernel 场景)。两者用途不同,排查方式也不同。
查看 systemd-coredump 服务状态与日志
这是最常见、用户态进程崩溃时默认启用的机制。
- 检查服务是否启用并运行:
systemctl status systemd-coredump —— 查看激活状态、主进程 PID、最近日志摘要。注意 Loaded 行是否为 enabled,以及 Active 是否为 active (running) - 确认 coredump 功能是否实际生效:
systemctl is-active systemd-coredump 返回 active 才表示服务就绪;若为 inactive,需执行 sudo systemctl enable --now systemd-coredump - 查看该服务自身运行日志:
journalctl -u systemd-coredump -n 50 -f —— 实时跟踪最近 50 行日志,可观察是否有“Failed to store core”、“Permission denied”或路径不可写等报错 - 验证 core 文件是否被正常捕获:
运行 coredumpctl list 列出所有已记录的 core 转储;或用 coredumpctl info 进程名(如 coredumpctl info nginx)查看某次崩溃的详细信息(时间、UID、exe 路径、core 文件位置)
检查 core 文件实际保存位置与权限
即使服务运行正常,core 文件也可能因配置或权限问题未落地。
- 默认存储路径是 /var/lib/systemd/coredump/,直接列出:
ls -lh /var/lib/systemd/coredump/ - 查看当前系统 core pattern 设置:
cat /proc/sys/kernel/core_pattern —— 若输出为 |/usr/lib/systemd/systemd-coredump %P %u %g %s %t %c %h %e,说明走的是 systemd-coredump 管道;若为普通路径(如 /tmp/core.%e.%p),则绕过 systemd,需单独检查该路径权限 - 检查 ulimit 限制:
ulimit -c —— 返回 0 表示当前 shell 会话禁止生成 core;非 root 用户需在启动前设置,或通过 /etc/security/limits.conf 全局配置
查看 kdump 服务状态与日志(仅适用于内核崩溃场景)
kdump 是另一套独立机制,用于捕获 kernel panic 后的 vmcore,不处理普通进程崩溃。
- 检查 kdump 服务是否启用并加载 crash kernel:
systemctl status kdump —— 关注是否 active,以及日志中是否有 “kdump service started” 或 “Failed to start kdump” - 查看 kdump 启动日志详情:
journalctl -u kdump -n 100 或 kdumpctl logs(部分发行版提供该封装命令) - 确认 crash kernel 是否预留成功:
cat /sys/kernel/kexec_crash_loaded 应返回 1;
dmesg | grep -i "crash kernel" 可看到预留内存信息(如 “Reserving 256MB of memory at … for crashkernel”)
快速交叉验证是否真有 core 生成
不要只依赖服务状态,要结合行为验证:
- 手动触发一次可控崩溃(测试用):
kill -SEGV $$(向当前 shell 发送段错误),然后立即运行 coredumpctl list | head -5 查看是否新增记录 - 若仍无结果,检查 /etc/systemd/coredump.conf 配置:
重点关注 Storage=(应为 external 或 journal)、ProcessSizeMax=(避免过大被丢弃)、Compress=(影响写入性能) - 确保 /var/lib/systemd/coredump/ 所在文件系统有足够空间且未挂载为 noexec/nosuid


















