一、背景
core文件在极端情况下无限生成,而单个core文件达到几个G,导致算时间内占满内存,而使得机子宕机卡住,从而影响业务。
二、优化方案
使用定时任务在固定的时间执行一次回滚优化脚本,筛选出最后一次修改时间在5秒前的core文件,按顺序清理掉这些文件,只保留最新的一份core文件。
三、脚本代码
CORE_LOG_PATH=/logs #日志前缀
#core文件绝对路径,筛选出最后一次修改时间是在5秒前的core文件,实际是0.08分钟(4.8)之前,略有误差
CORE_LOG=(`find $CORE_LOG_PATH -maxdepth 1 -regex ".*core-[0-9]*-[0-9]*$" -type f -mmin +0.08 |xargs ls -rt `)
#处理core文件,仅保留最新的2个core文件
total=${#CORE_LOG[@]}
if [ $total -gt 2 ];then
for ((i=0;i<$(($total-2));i++))
do
CORE_LOG_FILE=${CORE_LOG[$i]}
if [ ! -e $CORE_LOG_FILE ]; then
continue
fi
#清理掉旧版本的core文件
rm $CORE_LOG_FILE
done
fi