每小时统计日志文件中字符串的出现次数(使用shell脚本)
我想制作一个脚本来计算特定字符串(域名)的出现次数 从日志文件(邮件日志)每小时,以检查他们每小时发送多少封电子邮件 我知道有许多简单而不同的方法可以将脚本放入文件(如grep等) 并计算行数(如wc-l) 但我不知道每小时怎么做 是的,我可以通过cron作业每60分钟调用一次脚本,但这会从开始到脚本执行的那一刻读取日志文件..而不是过去60分钟内生成的行,我不知道如何克服这一点 注: 我正在使用的显示每个域发送的所有电子邮件的命令是:每小时统计日志文件中字符串的出现次数(使用shell脚本),shell,Shell,我想制作一个脚本来计算特定字符串(域名)的出现次数 从日志文件(邮件日志)每小时,以检查他们每小时发送多少封电子邮件 我知道有许多简单而不同的方法可以将脚本放入文件(如grep等) 并计算行数(如wc-l) 但我不知道每小时怎么做 是的,我可以通过cron作业每60分钟调用一次脚本,但这会从开始到脚本执行的那一刻读取日志文件..而不是过去60分钟内生成的行,我不知道如何克服这一点 注: 我正在使用的显示每个域发送的所有电子邮件的命令是: \# cat /usr/local/psa/var/log
\# cat /usr/local/psa/var/log/maillog | grep -i qmail-remote-handlers \
| grep from | awk {' print $6 '} | gawk -F@ '{ print $2 }' \
| sort | uniq -c | sort -n | tail
结果如下:
8 domain1.tld
45 domain34.tld
366 domain80948.tld
etc etc
问题的要点是:
Yes I can call the script every 60 minutes via a cron job but this would read the log file
from the beginning till the moment the script was executed..and not the lines made in the
last 60 minutes, and I don't know how to overcome this.
你怎么能解决这个问题
sed
跳过这些行dd
跳过它我个人会选择方法2。它非常高效且易于实现。欢迎使用堆栈溢出。请在过久之前阅读这篇文章。您需要显示日志文件格式的一些行,以便时间信息可见。基本技术是创建一个模式,该模式匹配相关小时内的所有时间,但细节取决于日志文件中的日期格式。另外,您是否在日志文件中记录的所有时间内,在一个小时内进行分析?