清理过期日志文件

清理过期日志文件的方法

用find+exec

find找出指定时间的文件,配合exec执行删除

1
2
3
# -mtime 指定文件修改时间
# 如清理2天前的
find log_dir -mtime +2 -type f -name "*.log" -exec rm -rf {} \;

用tmpwatch

使用tmpwatch清理目录,文件最后一次被访问的时间,单位是小时;这个命令只适全整个目录下都是日志的情况

1
2
# 如清理2天前的
tmpwatch -mdfv 48 log_dir

如何查询指定时间范围内的日志

搞代码的都离不开通过查看日志处理问题;服务器上记录的日志都比较大,不会把整个日志文件拿来分析,通常会截取时间范围内的日志来分析问题,介绍几种查询时间范围日志方法。

处理文件肯定是离不开linux三剑客grep、sed、awk的。

演示截取2点到9点的日志

测试日志文件test.log,模拟所有2点到11点日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{"timestamp":"2022-09-27T02:12:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:14:42+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:41:03+08:00","level":"debug"}
{"timestamp":"2022-09-27T02:45:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"error"}
{"timestamp":"2022-09-27T04:35:31+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:38:40+08:00","level":"debug"}
{"timestamp":"2022-09-27T04:49:55+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"error"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"error"}
{"timestamp":"2022-09-27T09:21:04+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:21:19+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:30:30+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:30:35+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:33:46+08:00","level":"debug"}
{"timestamp":"2022-09-27T09:37:02+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:29:54+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:29:59+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:02+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:03+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:43+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:44+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:45+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:46+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:30:48+08:00","level":"debug"}
{"timestamp":"2022-09-27T10:56:22+08:00","level":"debug"}
{"timestamp":"2022-09-27T11:09:36+08:00","level":"debug"}
{"timestamp":"2022-09-27T11:09:41+08:00","level":"debug"}

正则方式

grep不支持范围,awk和sed支持范围,三个都支持正则匹配