我的 bash 版本是 GNU bash,版本 4.1.2(1)-release (x86_64-redhat-linux-gnu)
我正在尝试搜索过去一小时内可能已附加到日志文件中的模式。我已经浏览了论坛上提出的其他解决方案,但它们对我不起作用。请协助。
这是我尝试过的,但对我不起作用 -
- grep "^$(date -d '-1 小时' +'%H')" /space/log/server.log | grep '错误'
- 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
测试并运行良好