最近系统上线后日志量剧增,需要按照日期每天定时将日志切割后保留7天。
参照了网上资料写了以下切割代码:
#!/bin/sh
function rotate() {
logs_path=$1
echo Rotating Log: $1
cp ${logs_path} ${logs_path}.$(date -d "yesterday" +"%Y%m%d") > ${logs_path}
rm -f ${logs_path}.$(date -d "7 days ago" +"%Y%m%d")
}
for i in $*
do
rotate $i
done
保存此段代码到任一shell脚本文件(如:rotate.sh)中设置其为可执行权限(chmod +x rotate.sh).
然后在cron中加入每天23点整执行此脚本,执行:crontab -e,加入如下代码
0 23 * * * find /opt/servers/tomcat-8.5.24/logs/ -size +0 -name 'catalina.out' | xargs /opt/script/log_rotate.sh
保存即可。