一、背景
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