使用linux crontab定时清理n天前的日志文件
最近有个需求,需要在linux机器上定时执行清理n天前的日志文件。其实我开始做了个更有意思的清理工具,根据alertmanager做webhook,然后在每个Linux机器上开启一个agent,收到请求再执行清理。不过使用crontab也是一个非常有用的工具。
crontab是Linux的一个守护进程,定时执行的工具。详细的内容可以使用man crontab查看。废话不多说,直接来看怎么使用它。只有用起来,才是属于自己的。
查看当前有哪些定时任务
crontab -l 查看当前已经存在的定时任务。

可以看到,你需要的就是准备一个shell脚本(任务指令),一个定时时间(执行频率),一条触发指令(程序入口)。
准备好这三个东西就可以。
下面我们以一个简单的需求来演示。
需要删除 /data 目录下文件名存在的带 log 的文件,修改这些文件的大小为0。
设置一个新的定时任务
crontab -e 可以进入crontab编辑页面。将带‘*’的那行复制成新的行,如下:

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

之前的需求,我将clean3dayslog.sh文件放到/root目录下,然后执行文件,clear3dayslogs.sh的内容为:
1 |
|
这个demo比较简单,不过用处确实很大,一般清除的都在开发环境上,日志输出。