linux下项目日志自定义管理和保留清理方法



概述:很多时候我们在linux系统中需要对项目的日志进行保留期限的控制,最近遇到了这样一个需求,保留项目日志的7天,也就是一周的时间,其他的日志全部删除,由于每天产生的日志量比较大,个数也比较多,手动删除肯定是不现实了,所以写了下面这个简单的自动删除脚本。下面来看具体内容。
 
 
# more del.sh
 
_rootdir=/usr/prj/logs(自定义)
 
#日志以每月形式存放
 
_subdir=`date +%Y-%m`
 
#计算当天要删除的日志文件个数
 
_delnum=$(ls -lhtr $_rootdir/$_subdir/ | grep -v total | awk '{print $7}' | uniq -c | head -n1 | awk '{print $1}')
 
#保留删除记录
 
ls -lhtr $_rootdir/$_subdir/ | grep -v total | head -n$_delnum | awk '{print $9}' > /tmp/del_$_delnum.txt
 
sleep 1
 
#计算日志已经产生的天数
 
_delline=$(ls -lhtr $_rootdir/$_subdir/ | grep -v total | awk '{print $7}' | uniq -c | wc -l)
 
#多于指定天数即开始删除,(自定义)
 
if [ $_delline -gt 7 ]; then
 
echo "gt 7, del !"
 
#达到删除条件,删除指定个数的日志文件
 
ls -lhtr $_rootdir/$_subdir/ | grep -v total | head -n$_delnum | awk '{print $9}' | xargs -i rm -rf $_rootdir/$_subdir/{}
 
else
 
echo "lt 7, no del !"
 
fi
 
#跨月的删除方法
 
#日志以上个月形式存放
 
_sublastdir=`date +%Y-%m -d "-1 months"`
 
#计算日志已经产生的天数,用此判断上个月的日志是否已经删除完
 
_dellastline=$(ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | awk '{print $7}' | uniq -c | wc -l)
 
if [ $_dellastline -gt 0 ]; then
 
echo "del!"
 
#计算当天要删除的日志文件个数
 
_dellastnum=$(ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | awk '{print $7}' | uniq -c | head -n1 | awk '{print $1}')
 
#达到删除条件,删除指定个数的日志文件
 
ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | head -n$_dellastnum | awk '{print $9}' | xargs -i rm -rf $_rootdir/$_sublastdir/{}
 
else
 
echo "null!"
 
fi
 
注意:
 
1、以上内容适用于日志按月的方式存储,的自动删除,或者需要手动改变目录结构。
 
2、以上项目日志目录需要自定义修改。
 
3、以上项目日志保留天使需要自定义修改,默认是保留7天。
 
4、将内容修改保存后,放入系统crontab按天执行即可。



 


本文标签: linux 日志管理 保留和删除

内容版权声明:【蓝色网居】部分资源来源于网络,如有侵犯您的所有权,请随时告知我们,我们将立即删除!感谢配合!

转载请注明出处:https://blog.ff56.cn/qita/1667723188.html


【手机扫一扫查看文本】

手机扫一扫 手机扫一扫查看文本 手机扫一扫





常用的linux 保留和删除 head命令 目录 history记录 修改默认网段 日志管理 docker 常用案例 phpmyadmin安装 python3 reference linux commit 集群 tail 批量 shell判断 rewrite操作 docker迁移 linux系统优化 format rediscluster 转发 远程仓库 ssh代理 自定义 持久化AOF invalid