Linux 自动删除30天前日志

执行xx天自动删除日志需要两个东西,第一个是搜寻30天前写的日志的命令,第二个是自动周期执行脚本的命令,将二者结合就可以实现30天自动删除日志

搜寻30天前的日志

本文主要基于日志文件的最后修改日期做判断,而非判断日志的后缀名(有些日志可以命名为 日期.log,如 Zlog)

命令如下

find /var/log/ -mtime +30 -name "*.log" -exec rm -rf {} \;

解释

# /var/log/ 是日志的具体路径,可以改成别的
# -mtime 参数后面接的是查询多少天前的文件
# -name 参数后面接的是日志的名称,可以使用通配符
# -exec 参数后面接的是删除命令,当然也可以做的别的事情,应该不需要变化

自动周期执行脚本的命令

我们用到 crontab 命令,crontab 是从配置文件读取到日程计划 (比如说什么时间段,执行什么样的命令)

Linux crontab 命令 | 菜鸟教程

crontab [ -u user ] { -l | -r | -e }
# -u 指定用户
# -l 列出当前的日程计划
# -r 删除日程计划
# -e 在线编辑日程计划
# 日程计划定义:在什么时间段,执行什么样的指令

 比如我们写一个日程计划    ——   每分钟将日期写入到 /home/123.txt

$ touch /home/123.txt
$ crontab -e
$ 写入如下信息
SHELL=/bin/bash
HOME=/
# 注释
* * * * * echo `date`  >> /home/123.txt

我们 cat /home/123.txt 能看到每分钟都有写入

接下来讲下这个日程计划的语法,上文中 # 注释 以上的基本不会发生变化,所以不用管,主要是# 注释 下面的格式

f1 f2 f3 f4 f5 program
# 前面五个f都代表时间,意思不一样参考下面
# program代表具体执行的命令,应该不用讲解


*    *    *    *    *
-    -    -    -    -
|    |    |    |    |
|    |    |    |    +----- 星期中星期几 (0 - 6) (星期天 为0)
|    |    |    +---------- 月份 (1 - 12) 
|    |    +--------------- 一个月中的第几天 (1 - 31)
|    +-------------------- 小时 (0 - 23)
+------------------------- 分钟 (0 - 59)

一些解释

1、* 代表所有,在不同的位置意义不一样,比如说在 f1 的位置也就是第一个位置代表 0-59,也就是 0-59 与 * 在第一个位置等价,又比如第二个 * 代表 0-23 ,也就是 0-23 与 * 在第二个位置等价,以此类推
0-59 0-23 1-31 1-12 0-6 跟 * * * * * 等价

2、如果我们想每两分钟执行一次脚本,第一个位置应该写 */2 或者 0-59/2,斜杠代表每,在不同位置意思也不一样,在第二个位置就是每小时 如 0-23/2 ,代表每两小时执行一次

3、如果我们想每1 、3 、5分钟执行一次脚本,第一个位置可以填写 1,3,5

4、我不知道规则一和规则三能不能结合,比如 1-3,5-7

一些意外故障的排查,可以参考

crontab详解 - 小片清风 - 博客园

最后

我们将标题一和标题二结合就可以实现30天自动删除日志,其实这个操作应该不限于是删除日志,还可以做很多别的定时任务的事情

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值