代码改变世界

MongoDB日志定时滚动归档

2024-09-19 11:23  ndzj  阅读(25)  评论(0编辑  收藏  举报

#!/bin/bash


logtype='mongo' #
SG='M' #单位G或M
target=4 #阀值
retention_time=20 #日志归档保留周期(天)

#处理日志函数
function log_dispose() {
#大于xx G
pd_log_size=$(du -sh $1 |grep "$SG"|cut -d''$SG'' -f1)
log_pwd=$(dirname "$1")
if [ -z "$pd_log_size" ]; then
echo "变量为空,退出脚本。"
exit 1
fi

if [ $pd_log_size -gt $target ]; then
lz4 $1 >"$1"_`date +%Y%m%d_%H%M%S`.lz4
:>"$1"
fi
}
#日志获取列表
logs_file=$(grep '/log' `ps -ef|grep "$logtype"|grep -vE 'grep|_export'|awk -F' ' '{print $10}'`|cut -d'"' -f2)
for f in $logs_file; do
log_dispose "$f"
done

find $log_pwd -type f -name "*.lz4" -mtime +"$retention_time" -exec rm {} \;

 

说明 : 支持 一台机器上运行多个实例的日志管理

 

 

 

06 0 * * * source /etc/profile ; cd /data/clear_log && /bin/bash clear_log.sh