在之前我發了一個很蠢的方法,使用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 localhost* catalina* manage* host*
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 localhost* catalina* manage* host*
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 localhost* catalina* manage* host*
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號的晚上九點執行這個腳本