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