grep 查找过去一小时内日志文件中的模式

grep 查找过去一小时内日志文件中的模式

我的 bash 版本是 GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu)

我正在尝试搜索过去一小时内可能已附加到日志文件中的模式。我已经浏览了论坛上提出的其他解决方案,但它们对我不起作用。请协助。

这是我尝试过的,但对我不起作用 -

  1. grep "^$(date -d '-1 小时' +'%H')" /space/log/server.log | grep '错误'
  2. grep -E "^($(日期 -d '-1 小时' '+%H')|$(日期 '+%H')):[0-9]{2}:[0-9]{2 }" /space/log/server.log | grep '错误'

我的示例日志文件如下所示 -

[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R java.lang.NullPointerException 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.java:48) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:69) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at java.lang.reflect.Field.set(Field.java:670) 
[9/2/20 3:09:56:166 CDT] 0000010c SystemErr R at sun.reflect.GeneratedMethodAccessor2124.invoke(Unknown Source) – 

我想在过去一小时内搜索日志文件中的模式并发送电子邮件通知。该脚本将被安排每小时通过 cron 运行一次。

此示例文件不包含错误,我将在此文件中搜索错误和异常。基本上想按小时搜索此文件中的模式并发送邮件

请在这方面协助我。我被困住了。

答案1

d=`date +%m"/"%d"/"%y" "%H  -d "1 hour ago"|awk -F "/" 'OFS="/"{sub("0","",$1);sub("0","",$2);print }'`

awk -v d="$d" '$0 ~ d {print $0}' file

测试并运行良好

相关内容