線上有一個日誌系統,放在/data/log目錄,有時候出現磁盤空間不足的狀況,因此寫了一個腳本,刪除前一天的日誌文件。bash
內容以下:ide
#!/bin/bashspa
eve=`date -d "1 day ago" +"%Y%m%d"`rest
startime=`date +%Y-%m-%d" "%H:%M:%S`日誌
echo "######################################" >> /opt/clean_log.logit
echo "$startime 開始刪除文件/data/log/messages-$eve" >> /opt/clean_log.logclass
rm -rf /data/log/messages-$evedate
if [ ! -e /data/log/messages-$eve ];thenfile
echo "刪除成功" >> /opt/clean_log.logim
else
echo "刪除失敗" >> /opt/clean_log.log
fi
startime=`date +%Y-%m-%d" "%H:%M:%S`
echo "$startime 開始切割文件/var/log/message" >> /opt/clean_log.log
cd /var/log/
mv -f messages messages-$eve
if [ -e /var/log/messages-$eve ];then
echo "切割成功" >> /opt/clean_log.log
else
echo "切割失敗" >> /opt/clean_log.log
fi
/etc/init.d/rsyslog restart >> /dev/null
if [ `echo $?` -eq "0" ];then
echo "重啓rsyslog服務成功" >> /opt/clean_log.log
else
echo "重啓rsyslog服務失敗" >> /opt/clean_log.log
fi
startime=`date +%Y-%m-%d" "%H:%M:%S`
echo "$startime 開始刪除文件/var/log/message-$eve" >> /opt/clean_log.log
rm -rf /var/log/messages-$eve
if [ ! -e /var/log/messages-$eve ];then
echo "刪除文件成功" >> /opt/clean_log.log
else
echo "刪除文件失敗" >> /opt/clean_log.log
fi
說明:
rm -rf刪除的時候,無論文件是否存在
用 echo $? 判斷的時候,始終都是0
因此用! -e $filename 判斷文件不存在,就說明文件刪除成功了。
/var/log/message是系統日誌,雖然系統默認會自動切割,但不是天天都會切割。
因此腳本里面進行了切割。
一旦切割以後,message不會自動生成,須要重啓rsyslog服務纔會生成。
最後建立任務計劃,天天晚上按期執行就能夠了。