Linux cron clean log files older than N days

使用linux crontab定时清理n天前的日志文件

最近有个需求,需要在linux机器上定时执行清理n天前的日志文件。其实我开始做了个更有意思的清理工具,根据alertmanager做webhook,然后在每个Linux机器上开启一个agent,收到请求再执行清理。不过使用crontab也是一个非常有用的工具。

crontab是Linux的一个守护进程,定时执行的工具。详细的内容可以使用man crontab查看。废话不多说,直接来看怎么使用它。只有用起来,才是属于自己的。

查看当前有哪些定时任务

crontab -l 查看当前已经存在的定时任务。

2018-10-29-22-26-45

可以看到,你需要的就是准备一个shell脚本(任务指令),一个定时时间(执行频率),一条触发指令(程序入口)。
准备好这三个东西就可以。

下面我们以一个简单的需求来演示。

需要删除 /data 目录下文件名存在的带 log 的文件,修改这些文件的大小为0。

设置一个新的定时任务

crontab -e 可以进入crontab编辑页面。将带‘*’的那行复制成新的行,如下:

2018-10-29-22-33-33

可能会问,前面的‘*’的时间怎么设置。可以使用cat /etc/crontab查看解释:

2018-10-29-22-35-12

之前的需求,我将clean3dayslog.sh文件放到/root目录下,然后执行文件,clear3dayslogs.sh的内容为:

1
2
3

#!/bin/bash
find /data -mtime +3 -name "*.log*"|grep rtlog|xargs -i truncate -s 0 {}

这个demo比较简单,不过用处确实很大,一般清除的都在开发环境上,日志输出。

本文标题:Linux cron clean log files older than N days

文章作者:陈志军

发布时间:2018-10-29 22:14:21

原始链接:http://chenzhijun.me/2018/10/29/linux-crontab-clean-ndays-log/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

坚持原创技术分享,您的支持将鼓励我继续创作!