在Linux系统里,crash文件夹并不是用户手动创建的普通目录,而是系统在内核或关键进程发生严重错误时,由特定服务自动生成的故障数据存放点。它最常见的位置是/var/crash,也有部分发行版或自定义配置会放在根目录下的/crash。这个目录里的文件记录了系统崩溃那一刻的内存状态、寄存器信息以及调用栈,是事后排查问题的一手材料。

crash文件夹从何而来
绝大多数情况下,/var/crash目录是由kdump机制产生的。kdump是Linux内核提供的一种崩溃捕获框架:当系统内核发生panic或致命异常时,它会启动一个预留的小内核(capture kernel),把当前宕机内核的内存完整dump出来,写成文件存到本地磁盘或远程节点。这些文件默认就落在crash文件夹内,文件名往往带有时间戳和主机名。
除了内核崩溃,某些用户态组件也会往类似名称的目录写数据。例如部分应用自己实现了异常处理,在收到SIGSEGV信号后调用核心转储函数,将进程镜像保存到规定路径。不过严格来说,系统级的crash文件夹专指kdump产出,应用级的一般在各自日志目录,不会直接污染/var/crash。
里面具体存了什么
进入crash文件夹,你通常会看到一个以日期和机器名组合的二级目录,里面至少包含两个文件:一个是vmcore,它是压缩或原始形式的内核内存镜像;另一个是vmcore-dmesg.txt,保存了崩溃时的内核环形缓冲区日志。有些版本还会附带kexec参数记录。
我们可以用下面这段Shell命令查看crash目录结构,并判断占用空间:
# 查看crash文件夹内容 ls -lh /var/crash/ # 进入某个具体崩溃记录目录 cd /var/crash/20240101-120000-hostname # 显示内部文件 ls -lh # 查看dmesg日志尾部,寻找崩溃原因 tail -n 50 vmcore-dmesg.txt
如果直接打开vmcore是乱码,因为它不是文本,需要用crash分析工具解析。该工具能读出进程列表、内存分配、栈回溯,对驱动bug导致的主机重启特别有用。
如何分析这些崩溃文件
要使用crash工具,必须先安装对应内核的debuginfo包,否则符号表缺失,只能看到地址看不到函数名。分析时指定内核映像和vmcore路径即可进入交互界面。
# 安装crash与内核调试信息(以CentOS为例) yum install crash kernel-debuginfo # 启动分析,vmlinux为带符号内核,vmcore为转储 crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/20240101-120000-hostname/vmcore
进入crash命令行后,常用指令有bt查看崩溃线程栈、ps列出进程、log打印内核日志。比如一次网卡驱动空指针引起的panic,用bt就能直接定位到驱动的收包函数。对于不想交互的人,也可以写脚本批量提取关键字段。
能不能删,怎么安全清理
crash文件夹里的文件只会累积,不会自动轮转。一台频繁死机的服务器可能几个月就撑爆磁盘。如果确认某次崩溃已经排查完毕,或者机器从未打算做内核级排错,可以手动删除旧目录。
建议用以下方式清理,避免误删正在写入的文件:
# 仅删除30天前的崩溃记录
find /var/crash -maxdepth 1 -type d -mtime +30 -exec rm -rf {} ;
# 若彻底不需要kdump,关闭服务并移除目录
systemctl stop kdump
systemctl disable kdump
rm -rf /var/crash
但要注意,如果系统还在质保期或你正被随机重启困扰,删掉crash文件就等于销毁证据。此时应保留近期记录,并交给内核团队或厂商支持分析。另外,通过修改/etc/kdump.conf可以限制vmcore大小或改为远程存储,从源头控制本地目录膨胀。
与其他类似目录的区别
新手常把/var/crash和/var/log下的core文件搞混。后者多是用户进程调用ulimit -c允许后生成的核心转储,文件名常为core.PID,归属应用故障;而crash文件夹是系统级、内核级的归档,内容和体积都更大。还有/proc/sys/kernel/core_pattern决定了进程core落盘位置,和kdump是完全两套机制。
| 目录或文件 | 来源 | 典型内容 |
|---|---|---|
| /var/crash | kdump内核转储 | vmcore、dmesg日志 |
| /var/log/core.PID | 用户态核心转储 | 进程内存镜像 |
| /var/log/messages | 系统日志服务 | 文本形式运行记录 |
理清这三者的边界,你在巡检服务器时就不会对着crash文件夹手足无措。它是故障档案室,不是垃圾堆,也不是系统运行必需目录,按需留存和清理即可保障运维效率。