linux 删除日志脚本

线上有一个日志系统,放在/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服务才会生成。


最后建立任务计划,天天晚上按期执行就能够了。

相关文章
相关标签/搜索