core文件集中管理与统计

默认情况下,core文件生成在可执行文件的同名目录下,在大规模应用场景,将十分痛苦,也随时面对着磁盘被吃满的危险。

本文将简要介绍以下core生成的相关配置,提供一个简单的core统计方案。

1、core文件的生成

1.1 core文件存放路径以及名称

kernel-2.5 版本以上的内核可以通过文件/proc/sys/kernelcore_pattern/proc/sys/kernel/core_uses_pid 配置;

笔者使用的是Suse Enterprise可以通过sysctl 修改相关的字段配置,其他的发行版本是否能正常工作未经核实。

默认情况下,这个文件中内容为"core",也就是默认情况下的core文件名;如果要将core文件安dump到其他目录,则直接配置即可,如:“/path/core_files/core.%e.%t”

  • %e 可执行文件名称
  • %t dump的时间,1970年至今的秒数,同time()
  • /proc/sys/kernel/core_uses_pid
  • %% %
  • %u UID
  • %g GID
  • %p PID,是否有效还取决于文件/proc/sys/kernel/core_uses_pid 的值(2.4内核可以同样可以通过/etc/sysctl.conf配置),默认情况下这个文件中的值为0,即不启用,置成1极为启用

注意事项

1、生成core文件名最大长度为64字节,超过长度部分将被截断

2、通过sysctl配置的方法分别为:

sysctl -w kernel.core_pattern="/path/core.%e.%t"

sysctl -w kernel.core_user_pid=1

 

1.2 core大小限制

如果,对core大小不做任何限制,coredump出的文件大小即core进程的内存空间,磁盘空间咔咔就满了。

只需要通过ulimit 控制一下就OK了。

ulimit -S -c xx
  • -c --core_size,生成的core文件大小,以block为单位,该值为0,即禁止core的生成
  • ulimit的使用方法,后续整理

2、统计

假设已经将core文件集中存放在/path下,就可通过定时扫描该目录下的文件名,分析出哪些文件有core了,并做适当的清理(否则,累计起来的core文件可能写满磁盘)

2.1 解析生成core的文件

core_path="/path"
core_file_list="/tmp/core_file_list"
find ${core_path} -maxdepth 1 -mindepth 1 -type f -name "core.*.[0-9]*[0-9]" -fprint ${core_file_list}
while read core_file
do
    core_file=`echo $core_file | awk -F. '{print $2}'`
    core_time=`echo $core_file | awk -F. '{print $3}'`
    /// 将得到的信息上报到统一的位置,如通过wget上报到cgi
    log $core_file $core_time
    report $core_file $core_time
done < ${core_file_list}

if  [ -f ${core_file_list} ];then     rm ${core_file_list} fi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值