在之前我发了一个很蠢的方法,使用python脚本写的,写了很长,后来发觉是件蠢事,用shell脚本几行字就写出来了,下面给大家说下我的脚本:
#/bin/sh
echo " " > /usr/local/apps/server_8580/logs/catalina.out
echo " " > /usr/local/apps/server_8581/logs/catalina.out
echo " " > /usr/local/apps/server_80/logs/catalina.out
curDate=$(date "+%Y-%m-%d")
cd /usr/local/apps/server_8580/logs/
sleep 2
tar -czvf $curDate-8580.tar.gz ./*
sleep 5
mv $curDate-8580.tar.gz /bak/logs_bak/
sleep 10
ls | grep -v catalina.out |xargs rm -rf;
sleep 10
cd /usr/local/apps/server_8581/logs/
sleep 2
tar -czvf $curDate-8581.tar.gz ./*
sleep 5
mv $curDate-8581.tar.gz /bak/logs_bak/
sleep 10
ls | grep -v catalina.out |xargs rm -rf;
sleep 10
cd /usr/local/apps/server_80/logs/
sleep 2
tar -czvf $curDate-80.tar.gz ./*
sleep 5
mv $curDate-80.tar.gz /bak/logs_bak/
sleep 10
ls | grep -v catalina.out |xargs rm -rf;
大家只需要弄懂第一段就可以了,因为我这里又三个应用,所以后面都是类似的:
echo " " > /usr/local/apps/server_8580/logs/catalina.out 这句的意思是吧catalina.out这个文件内容清空(因为catalina.out这个文件是真的大),但是保留这个文件,因为怕这个调试文件删除掉的话,会影响程序,本人也不是程序员所以对这个不精通哈
curDate=$(date "+%Y-%m-%d")获取今天的日期
后面几句cd什么的都是基本操作啦,tar -czvf $curDate-8580.tar.gz localhost* catalina* manage* host*,这句话我看了下tomcat的logs目录底下大概都是以localhost开头的,catalina开头的,manage开头的,host开头的日志文件,这里根据实际情况,这句话的意思就是把这底下的文件都压缩包,这个压缩包名字是今天的日期+-8580(这个大家自己根据情况写,8580因为我的应用目录名字含有8580,所以这样好区分)
mv $curDate-8580.tar.gz /bak/logs_bak/ 把这个备份的压缩包剪切到备份目录/bak/logs_bak目录下,大家根据实际情况建这个备份目录
ls | grep -v catalina.out |xargs rm -rf 重点,排除掉catalina.out这个文件,也就是不删除catalina.out这个文件,然后删除logs目录底下所有文件,xargs的意思是把前面ls | grep -v catalina.out得到的内容存放在变量里面,也就是要删除的文件列表
最后就是把这个脚本加入到crontab定时计划中
每个月10号的晚上九点执行这个脚本