- 写了个简单的tomcat的整理log日子,满足简单需求
- 时间可以自己改,循环查找tomcat(tomcat路径写进path数组中,就可以执行多个tomcat日志整理)
- 写的不好之处,敬请谅解。
#!/bin/sh
#把3天以前的log,txt文件移到back_log目录中
#把5天以前的日志放进一个log_tar_js并且打包压缩
#把7天以前的tar包移除
#循环查找执行这个命令
#注意跨年会影响脚本
#每天只能执行一次
path1=/data/tomcat/php-tomcat/logs
path2=/data/tomcat/tomcat-test/logs
path=($path1 $path2)
for m in ${path[*]};do
date=`date +%Y-%m-%d -d "1 days ago" `
cd $m
#备份前一天的catalina.out
cp catalina.out catalina.out.$date.log
echo > catalina.out
#移动3天之前的log,txt文件到back_log中
mv_date=`date +%Y-%m-%d -d "3 days ago" `
for n in `ls *.log *.txt -1`;do
m=`echo $n | awk -F. '{print $(NF-1)}'`
m=`echo ${m:0-10}`
if [[ $m < $mv_date || $m = $mv_date ]];then
echo "file $n 移入back_log"
mv -f $n back_log
fi
done
#创建文件夹。并且把5天之前的日志放进去,打包压缩
cd ./back_log
tar_date=`date +%Y-%m-%d -d "5 days ago"`
log_dir=log.$tar_date
mkdir $log_dir
for n in `ls *.log *.txt -1` ;do
m=`echo $n | awk -F. '{print $(NF-1)}'`
m=`echo ${m:0-10}`
if [[ $m < $tar_date || $m = $tar_date ]];then
mv -f $n $log_dir
fi
done
echo "完成移动"
tar -czvf $log_dir.tar.gz $log_dir
rm -rf $log_dir
echo "完成打包"
#移除7天之前的压缩包
rm_tar=`date +%Y-%m-%d -d "7 days ago"`
for n in `ls *.tar.gz -1`;do
m=`echo $n | awk -F. '{print $2}'`
m=`echo ${m:0-10}`
if [[ $m < $rm_tar ]];then
rm -f $n
echo "移除$n"
fi
done
echo '已经移除过期包'
done
#把3天以前的log,txt文件移到back_log目录中
#把5天以前的日志放进一个log_tar_js并且打包压缩
#把7天以前的tar包移除
#循环查找执行这个命令
#注意跨年会影响脚本
#每天只能执行一次
path1=/data/tomcat/php-tomcat/logs
path2=/data/tomcat/tomcat-test/logs
path=($path1 $path2)
for m in ${path[*]};do
date=`date +%Y-%m-%d -d "1 days ago" `
cd $m
#备份前一天的catalina.out
cp catalina.out catalina.out.$date.log
echo > catalina.out
#移动3天之前的log,txt文件到back_log中
mv_date=`date +%Y-%m-%d -d "3 days ago" `
for n in `ls *.log *.txt -1`;do
m=`echo $n | awk -F. '{print $(NF-1)}'`
m=`echo ${m:0-10}`
if [[ $m < $mv_date || $m = $mv_date ]];then
echo "file $n 移入back_log"
mv -f $n back_log
fi
done
#创建文件夹。并且把5天之前的日志放进去,打包压缩
cd ./back_log
tar_date=`date +%Y-%m-%d -d "5 days ago"`
log_dir=log.$tar_date
mkdir $log_dir
for n in `ls *.log *.txt -1` ;do
m=`echo $n | awk -F. '{print $(NF-1)}'`
m=`echo ${m:0-10}`
if [[ $m < $tar_date || $m = $tar_date ]];then
mv -f $n $log_dir
fi
done
echo "完成移动"
tar -czvf $log_dir.tar.gz $log_dir
rm -rf $log_dir
echo "完成打包"
#移除7天之前的压缩包
rm_tar=`date +%Y-%m-%d -d "7 days ago"`
for n in `ls *.tar.gz -1`;do
m=`echo $n | awk -F. '{print $2}'`
m=`echo ${m:0-10}`
if [[ $m < $rm_tar ]];then
rm -f $n
echo "移除$n"
fi
done
echo '已经移除过期包'
done