linux下项目日志自定义管理和保留清理方法(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按天执行即可。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。