如何使用shell腳本壓縮並且轉存tomcat的日誌

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章