概述:很多時候我們在linux系統(tǒng)中需要對項目的日志進(jìn)行保留期限的控制,最近遇到了這樣一個需求,保留項目日志的7天,也就是一周的時間,其他的日志全部刪除,由于每天產(chǎn)生的日志量比較大,個數(shù)也比較多,手動刪除肯定是不現(xiàn)實了,所以寫了下面這個簡單的自動刪除腳本。下面來看具體內(nèi)容。
# more del.sh
_rootdir=/usr/prj/logs(自定義)
#日志以每月形式存放
_subdir=`date %Y-%m`
#計算當(dāng)天要刪除的日志文件個數(shù)
_delnum=$(ls -lhtr $_rootdir/$_subdir/ | grep -v total | awk '{print $7}' | uniq -c | head -n1 | awk '{print $1}')
#保留刪除記錄
ls -lhtr $_rootdir/$_subdir/ | grep -v total | head -n$_delnum | awk '{print $9}' > /tmp/del_$_delnum.txt
sleep 1
#計算日志已經(jīng)產(chǎn)生的天數(shù)
_delline=$(ls -lhtr $_rootdir/$_subdir/ | grep -v total | awk '{print $7}' | uniq -c | wc -l)
#多于指定天數(shù)即開始刪除,(自定義)
if [ $_delline -gt 7 ]; then
echo "gt 7, del !"
#達(dá)到刪除條件,刪除指定個數(shù)的日志文件
ls -lhtr $_rootdir/$_subdir/ | grep -v total | head -n$_delnum | awk '{print $9}' | xargs -i rm -rf $_rootdir/$_subdir/{}
else
echo "lt 7, no del !"
fi
#跨月的刪除方法
#日志以上個月形式存放
_sublastdir=`date %Y-%m -d "-1 months"`
#計算日志已經(jīng)產(chǎn)生的天數(shù),用此判斷上個月的日志是否已經(jīng)刪除完
_dellastline=$(ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | awk '{print $7}' | uniq -c | wc -l)
if [ $_dellastline -gt 0 ]; then
echo "del!"
#計算當(dāng)天要刪除的日志文件個數(shù)
_dellastnum=$(ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | awk '{print $7}' | uniq -c | head -n1 | awk '{print $1}')
#達(dá)到刪除條件,刪除指定個數(shù)的日志文件
ls -lhtr $_rootdir/$_sublastdir/ | grep -v total | head -n$_dellastnum | awk '{print $9}' | xargs -i rm -rf $_rootdir/$_sublastdir/{}
else
echo "null!"
fi
注意:
1、以上內(nèi)容適用于日志按月的方式存儲,的自動刪除,或者需要手動改變目錄結(jié)構(gòu)。
2、以上項目日志目錄需要自定義修改。
3、以上項目日志保留天使需要自定義修改,默認(rèn)是保留7天。
4、將內(nèi)容修改保存后,放入系統(tǒng)crontab按天執(zhí)行即可。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。