在Linux上快速查找某个时间段的日志信息

在linux上查找日志的时候,如果我想找出某个时间段的日志, 用grep不太方便直接过滤出来,可以使用sed根据时间去查找。

sed -n '/开始时间日期/,/结束时间日期/p' logfile

下面以linux上nginx的web日志为例介绍如何查找某个时间段的日志信息:

比如我要查找从 2022-9-6 17:02:00 到2022-9-6 17:13:59 这个时间段的nginx web日志

cat web.access.log | sed -n '/06\/Sep\/2022:17:02:00/,/06\/Sep\/2022:17:13:59/p'

看起来使用很简单,但是会有很大坑,比如时间后面的/p不能漏掉了。

需要注意的地方:
开始时间和结束时间必须要是日志里面有的
- 如果开始时间日志里面没有,那么查询结果为空
- 如果结束时间日志里面没有,查询的结果就是开始时间到最后的全部日志

模糊查询
如果不知道日志的开始时间,不能精确到秒,可以用模糊查询, 用*号来做匹配。

比如查询时间段2022-9-6 17:02 到2022-9-6 17:13的nginx web 日志
cat web.access.log | sed -n '/06\/Sep\/2022:17:02:*/,/06\/Sep\/2022:17:13:*/p'

也可以按小时模糊查询
例如查询时间段2022-9-6 17点 到2022-9-6 18点的nginx web 日志
cat web.access.log | sed -n '/06\/Sep\/2022:17*/,/06\/Sep\/2022:18*/p'

此外 ,sed 也可以结合 grep 使用,比如我查询上面日志某个时间段的带有 POST 的日志行

cat web.access.log | sed -n '/06\/Sep\/2022:17*/,/06\/Sep\/2022:18*/p' | grep POST

日志导出
cat web.access.log | sed -n '/06\/Sep\/2022:17*/,/06\/Sep\/2022:18*/p' > /opt/web.log

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部