关于LINUX下定时清除过期日志的记录

本文介绍如何使用Linux的crontab设置定时任务,定期清理服务器上的过期日志文件,以节省存储空间并提高日志查阅效率。

       我们的服务器部署在linux系统上,后来发现每天都会产生大量的日志文件,不仅在查阅时很不方便,并且消耗存储空间,而且超过20天的日志也基本没有存在的意义。所以,计划写一个linux定时任务,及时删除过期日志。

       这个主要步骤就是写一个shell脚本,然后利用linux的crontab设置定时器来定时执行这个脚本。

       首先,我先介绍一下linux的crontab

我们先查看下etc/crontab文件

通过vim /etc/crontab命令进入编辑状态

minute  hour   day   month    dayofweek    command
 
    minute - 从0到59的整数 
    hour - 从0到23的整数 
    day - 从1到31的整数 (必须是指定月份的有效日期)
    month - 从1到12的整数 (或如Jan或Feb简写的月份)
    dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
    command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 

之前我的crontab文件中并没有从# run-parts以下的四行定时任务命令,不知道你们的有没有,没有的话可以添加上,这四句命令分别是 

        第一行 每小时的01分用root用户执行一次etc/cron.hourly文件夹下的sh脚本,

        第二行  每天的四点01分用root用户执行一次etc/cron.daily文件夹下的sh脚本

        第三行  每星期日的四点22分用root用户执行一次etc/cron.weekly文件夹下的sh脚本

        第四行  每年的一月的四点42分用root用户执行一次etc/cron.monthly文件夹下的sh脚本

了解上面的命令之后,我们的目的是每周执行一次sh脚本,所以我们在cron.daily文件夹下面新建一个sh脚本,内容如下

######################################################################
# 日志定时运行时间为每天4点2分
# 删除5天之前的日志文件
# 日志文件时间是根据日志名称后面的日期来计算
# 运行脚本注意日志文件中是否有其他相同后缀的非日志文件和日志文件名称是否符合要求
######################################################################

#日志文件所在目录
path=/home/dameng/software/tomcat-cangwu/logs

#进入日志目录
cd $path

#catalina.out日志文件备份
#获取前一天的日期
bak_date=`date +%Y-%m-%d -d "1 days ago"`
#备份catalina.out日志,后面添加日期
cp catalina.out catalina.out.$bak_date.log
#清空catalina.out日志文件
echo > catalina.out


#5天之前的日志文件删除
#获取5天之前的日期
del_date=`date +%Y-%m-%d -d "5 days ago"`
#获取文件名中的日期字符串,然后对比时间进行相应的操作,localhost_access_log的后                                                                                        缀文件名一般是txt,这里包括txt文件
for n in `ls *.log *.txt -1`;do
    m=`echo $n | awk -F. '{print $(NF-1)}'`
    m=`echo ${m:0-10}`
    if [ ! $m ]; then
        echo "IS NULL"
        continue
    fi
    if [[ $m < $del_date || $m = $del_date ]];then
        echo file $n will be deleted.
        rm -rf $n
    fi
done


最终结果如图 千万记得创建完成之后添加可执行权限 (命令:chmod +x  文件名)


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值