如何读取最近一个小时的日志文件



我正在尝试读取Linux服务器日志文件上可用的最后一个小时的日志。我已经尝试了以下命令,但它对我不起作用。

命令1:

START=`date --date='now-60 minutes' '+%Y-%m-%d %H:%M'`
END=`date --date='now' '+%Y-%m-%d %H:%M'`
awk "/$START/, /$END/" filepath

命令2:

grep "^$(date -d -1hour +'%Y-%m-%d %H')" filepath

命令3:

awk -vdate=$(date -d "60 minutes ago" '+%Y-%m-%d%H:%M:%S')  '$1$2 >= date { print }' filepath

解决此查询的任何建议/输入。

示例日志

[01/01/21 22:40:26:088 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:26:166 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:27:360 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:27:475 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:27:668 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:28:211 IST] 0000002a SystemOut     O [WebContainer : 0 ] ERROR bla bla bla
[01/01/21 22:40:29:447 IST] 00000040 SystemOut     O [WebContainer : 4 ] ERROR bla bla bla
[01/01/21 22:40:31:328 IST] 00000036 SystemOut     O [WebContainer : 3 ] ERROR bla bla bla

您正试图将一种格式的日期(%Y-%m-%d(与日志文件中完全不同的格式(%m/%d/%y(进行比较。试试这个:

awk -v d="$(date --date='now-60 minutes' '+%y%m%d%H%M')" -F'[[/ :]' '($4$2$3$5$6) > d' file

我假设:

  1. 01/01在您的示例中的日期是月/日,而不是日/月-如果我猜错了,请交换2美元和3美元
  2. 输入文件中的时间总是2位数字,例如09而不是9——如果这是错误的,那么使用sprintf()来生成用于比较的时间戳,而不仅仅是连接值
  3. 您在与日志文件日期相同的时区执行此操作——如果错误,请在运行脚本之前设置TZ=...

相关内容

  • 没有找到相关文章

最新更新