我们可以通过修改内核的参数,指定内核所生成的 coredump 文件的文件名及位置。 例如:
echo /var/crash/core_%e_%t_%p > /proc/sys/kernel/core_pattern
将会在 /var/crash/ 目录下生成名为 core_{process_name}_{time}_{pid} 的 coredump 文件
内核core_pattern模板中使用变量见下面的列表:
-
%% 单个%字符
-
%p 所dump进程的进程ID
-
%u 所dump进程的实际用户ID
-
%g 所dump进程的实际组ID
-
%s 导致本次core dump的信号
-
%t core dump的时间 (由1970年1月1日计起的秒数)
-
%h 主机名
-
%e 程序文件名
可以写一个 /usr/bin/core_hleper 进行 coredump 转储:
#!/bin/bash
exec gzip -> /var/crash/core-$1-$2-$3.gz