首页/系统/Linux 运维命令速查/coredumpctl 查询崩溃转储

coredumpctl 查询崩溃转储

systemd-coredump 接管后进程崩溃转储存在 journal 体系里,coredumpctl 可以直接列出、查看与提取 core 文件交给 gdb 分析。

Linux 运维命令速查系统更新于 2026-10-13

coredumpctl 是什么

进程崩溃转储由系统服务接管后会保存进日志体系,用 coredumpctl 可以列出、查看、提取转储文件,甚至直接进入调试器分析。判断进程究竟收到哪个信号退出,是排查崩溃的第一件事。

基本信息

用途查看与提取进程崩溃转储
语法coredumpctl 子命令与匹配条件
所属systemd
前提内核转储模式指向系统转储服务

典型使用场景

  • 崩溃定位:服务反复重启时先看有没有转储,确认是崩溃还是被外部终止
  • 提取现场:把转储导出交给开发或用调试器分析
  • 核对信号类型:区分非法访问与内存不足被杀,处理方向完全不同
  • 检查保留策略:转储占用空间较大,需要确认不会撑满磁盘
  • 准备分析环境:进入调试器前先确认调试工具与符号文件已就绪

常用示例

常用示例
coredumpctl list | tail -n 20
coredumpctl info myapp
coredumpctl dump myapp -o /tmp/myapp.core
coredumpctl gdb myapp            # 直接进入调试器(需安装 gdb)
coredumpctl list --since '2 hours ago'

确认配置

确认配置
cat /proc/sys/kernel/core_pattern      # 常见值:管道交给系统转储服务
systemctl status systemd-coredump --no-pager | head -n 5
coredumpctl --no-pager | head

子命令对照

子命令作用说明
list列出转储默认按时间倒序
info显示崩溃详情含信号、命令行与栈概览
dump导出转储文件可指定输出路径
gdb直接进入调试器需要调试器与调试符号
时间筛选按时间段过滤排查特定时段的崩溃
内核转储模式指向系统服务时转储保存在日志体系里;指向文件路径时传统转储文件落在进程的工作目录。
被强制终止的进程不产生转储,例如因内存不足被内核杀死的情况,只能靠系统日志判断。
转储有保留策略与空间上限,老旧记录会被自动清理,需要分析时尽早提取。

相邻排查手段

手段适用局限
崩溃转储管理需要调用栈与内存现场需权限与预先开启
内核日志看被强制终止的记录看不到程序内部状态
应用自身日志业务级错误定位崩溃瞬间可能来不及写
动态跟踪难以复现的问题有性能开销,需限时
分析崩溃要把转储与同版本的二进制、调试符号放在一起:只有地址没有符号时栈信息几乎无用。同时确认保留上限与存放位置,问题复现后尽快把现场复制出来再慢慢分析,避免被保留策略清理掉。

易错点

  • 进程被强制终止时不会产生转储,找不到文件先确认退出信号而不是怀疑配置
  • 保留策略会清理旧转储,问题复现后要尽快提取,否则现场消失
  • 没有调试符号时栈信息只有地址,定位价值有限,应同时保留对应版本的二进制
  • 大量转储会占用可观空间,磁盘紧张时要检查保留上限与存放位置
  • 用出错后的新版本二进制去解析旧转储:符号与地址对不上,栈信息会指向无关函数,分析前先确认版本一致

数据来源与参考

  • man 1 coredumpctl(systemd)
  • man 5 coredump.conf

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌