core dump 的双重身份
核心转储把进程崩溃瞬间的内存内容写入文件,其中可能包含密钥、口令与业务数据,既是排查崩溃原因的材料,也是敏感数据的重要来源。内核参数 core_pattern 决定转储写到什么位置,systemd 环境下也可以由 systemd-coredump 接管并用 coredumpctl 列出与提取。判断一台主机能否产生转储要看三处:core_pattern 的取值、进程资源限制 ulimit -c,以及 systemd 单元中的 LimitCORE。
基本信息
| 查看方式 | cat /proc/sys/kernel/core_pattern、coredumpctl list |
|---|---|
| 限制来源 | ulimit -c 与 unit 中的 LimitCORE |
| systemd 环境 | /var/lib/systemd/coredump 下的转储记录 |
| 数据性质 | 可能含凭据、密钥与业务数据,属敏感材料 |
典型使用场景
- 确认主机上是否落有崩溃进程的内存转储
- 把崩溃时刻作为主机异常时间线上的锚点
- 检查转储配置是否被改成丢弃,导致证据缺失
- 评估内存转储中可能暴露的凭据范围
- 为内存侧分析提供已有材料的入口
查看配置与转储
查看配置与转储
cat /proc/sys/kernel/core_pattern # 转储目标:路径模板、管道或丢弃
coredumpctl list 2>/dev/null | tail -10 # 列出 systemd 托管的转储
ulimit -c # 当前会话的核心文件大小限制
systemctl show nginx -p LimitCORE # 单元级别的限制
ls -lt --time-style=long-iso /var/lib/systemd/coredump/ 2>/dev/null | head
cat /etc/systemd/coredump.conf 2>/dev/null | grep -vE '^\s*#|^\s*$' # 保留策略core_pattern 读法
| 取值形式 | 含义 | 判读要点 |
|---|---|---|
| 普通路径模板 | 按模板文件名写到指定目录 | 含 %e、%p、%t 等占位符 |
| 以管道符开头 | 把转储管道给指定程序处理 | 常见为 systemd-coredump |
| 指向 /dev/null | 直接丢弃转储内容 | 配置成丢弃即不会留下文件 |
| 空值或未设置 | 使用内核默认行为 | 需结合发行版默认值判断 |
被配置为丢弃时不会产生文件,查不到转储不等于没有崩溃;此时应转向内核与系统日志中记录的崩溃与重启信息。
崩溃时间与后续重启时间通常很接近,可用于确认主机发生过非正常重启,是解释日志时间线断点的常用依据。
core 文件包含进程内存内容,属敏感数据;导出后应按证据规范封存并限制访问范围,报告中也不要直接引用其中的凭据内容。