【发布时间】:2020-08-07 00:37:28
【问题描述】:
我编写了一个简单的代码,它会在服务关闭时发送一封电子邮件,一旦我重新启动服务,脚本将检查文件中是否存在相同的关键字。问题是它可能会在日志中发现较早的错误并给出服务仍然关闭的错误警报。 所以我决定根据时间戳进行搜索。
dt=$(date +"%D %T")
awk '$0 ~ "Connection refused" && $0 >= $dt' /***.log
这仍然会返回所有旧结果
这就是日志内容的样子。
[08/06/20 11:36:54.577]:Work...
请让我知道我在这里缺少什么以及这是否是解决此问题的最佳方法。 编辑:这将是一个每小时运行一次的自动化脚本。
谢谢!
【问题讨论】:
-
步骤 1. 将时间戳转换为自纪元以来的秒数。 2. 比较为数字。
-
您需要检查包含“拒绝连接”的最后一行和所需的时间戳。可能是,您可以保存上次失败的时间戳,然后在重新启动服务后将其与包含错误的文件的最后一行进行比较。对于最后一行,您可以在 AWK 的 END{} 部分打印它。
-
mchelabi,这将是一个自动化脚本,所以我不会保存最后一次失败并进行比较。
-
当前时间总是大于错误时间,你永远无法在文件中找到它。此外,您的 AWK 命令不正确,代码中的 $td 不包含变量的值。
-
当您远离解决方案时,它有助于将读者的注意力集中在在 shellcheck.net 检查时不会产生任何警告的代码上。这个 Q 每月至少被问 1 次,您是否尝试在这里搜索答案?祝你好运。