linux – 根据日期范围过滤日志文件条目
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 根据日期范围过滤日志文件条目,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2429字,纯文字阅读大概需要4分钟。
内容图文
![linux – 根据日期范围过滤日志文件条目](/upload/InfoBanner/zyjiaocheng/953/e8b7b49bac474e63880bdcb7c5d5d1b2.jpg)
我的服务器具有异常高的CPU使用率,我可以看到Apache使用太多的内存.
我有一种感觉,我是一个IP的DOS – 也许你可以帮我找到他?
我使用以下行,找到10个最“活跃”的IP:
cat access.log | awk '{print $1}' |sort |uniq -c |sort -n |tail
前5个IP对服务器的请求大约是“普通”用户的200倍.但是,我不知道这5个是非常频繁的访问者,还是他们正在攻击服务器.
是否有方法,将上述搜索指定为时间间隔,例如.最近两个小时或今天10-12之间?
干杯!
2011年10月23日更新 – 我需要的命令:
在过去X小时内获取条目[这里两小时]
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print Date FS $4}' access.log
在过去X小时内获取最活跃的IP [这里两小时]
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date) print $1}' access.log | sort |uniq -c |sort -n | tail
在相对时间范围内获取条目
awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print Date FS Date2 FS $4}' access.log
在绝对时间内获取条目
awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $0}' access.log
在绝对时间内获得最活跃的IP
awk -vDate=`date -d '13:20' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'13:30' +[%d/%b/%Y:%H:%M:%S` ' { if ($4 > Date && $4 < Date2) print $1}' access.log | sort |uniq -c |sort -n | tail
解决方法:
是的,有多种方法可以做到这一点.以下是我将如何做到这一点.对于初学者,不需要管道cat的输出,只需用awk打开日志文件.
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date {print Date, $0}' access_log
假设您的日志看起来像我的(它们是可配置的),而不是日期存储在字段4中,并且被括起来.我上面所做的是在最近2小时内找到所有内容.注意-d’now-2小时’或现在减去2小时,对我来说这看起来像这样:[10 / Oct / 2011:08:55:23
所以我正在做的是存储两小时前的格式化值并与第四场比较.条件表达式应该是直接的.然后我打印日期,然后是输出字段分隔符(OFS – 或本例中的空格),然后是整行$0.你可以使用你以前的表达式,只需打印$1(IP地址)
awk -vDate=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date {print $1}' | sort |uniq -c |sort -n | tail
如果要使用范围指定两个日期变量并适当地构造表达式.
所以,如果你想在2-4小时之前找到一些东西,你的表达可能看起来像这样
awk -vDate=`date -d'now-4 hours' +[%d/%b/%Y:%H:%M:%S` -vDate2=`date -d'now-2 hours' +[%d/%b/%Y:%H:%M:%S` '$4 > Date && $4 < Date2 {print Date, Date2, $4} access_log'
以下是我回答的有关bash日期的问题,您可能会发现这些日期有用.
Print date for the monday of the current week (in bash)
内容总结
以上是互联网集市为您收集整理的linux – 根据日期范围过滤日志文件条目全部内容,希望文章能够帮你解决linux – 根据日期范围过滤日志文件条目所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。