我有一个 cron 作业的日志文件,其中的条目使用以下格式
Mar 8 17:30:01 hostname CROND[PROC_#]: (user) CMD (/path/to/job/)
我希望能够定期检查日志以查看是否运行了特定的 CRON 作业(每小时运行一次)。通过 grep 很容易找到我想要的日志。
grep name_of_job logfile
但我不确定如何准确地只抓取过去一小时的日志,以查看是否有任何 cron 作业已运行。
我尝试使用 awk 命令获取最后一小时 based on this post但我在使用 awk 时遇到了问题,因为我的日期戳分为多个字段。
最佳答案
您可以在 GNU awk 中执行此操作:
$ cat tst.awk
BEGIN {
FS="[ :]+"
nowSecs = systime()
thisYear = strftime("%Y")
}
{
mthNr = (match("JanFebMarAprMayJunJulAugSepOctNovDec",$1)+2)/3
inSecs = mktime(thisYear" "mthNr" "$2" "$3" "$4" "$5)
}
(nowSecs - inSecs) <= 60
$ awk -f tst.awk file
如果您的输入文件和当前日期可以跨越年份边界,那么您需要添加一些逻辑来处理它,因为您的输入文件不包含年份。
关于linux - BASH中如何从一个日志文件中准确抓取过去一小时的日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35880325/