我正在寻找/var/log/httpd
包含大量 Apache 日志文件的文件夹。
我正在寻找过去一小时内的特定事件。我已经尝试了以下方法,但我没有任何运气。
grep -R "$(date -d -1hour +'%Y-%m-%d %H')" /var/log/httpd/ | grep "too many failed"
想法?
我正在寻找/var/log/httpd
包含大量 Apache 日志文件的文件夹。
我正在寻找过去一小时内的特定事件。我已经尝试了以下方法,但我没有任何运气。
grep -R "$(date -d -1hour +'%Y-%m-%d %H')" /var/log/httpd/ | grep "too many failed"
想法?
您是否查看过 apache 日志中的日期格式?在我必须处理的系统(CentOS)上,其访问日志
/var/log/httpd
的日期格式是如果你的相同,那么你需要
作为您的日期命令。
如果它不同,那么您需要向我们展示日志文件使用的格式。
您正在执行递归 grep (-R) - 在这种情况下这是无用的 - 我假设您在 /var/log/httpd 下没有任何子目录(如果这是标准发行版)。
您想要做的是丢弃一小时前具有时间戳的行之前的所有内容。此外,访问和错误日志通常具有不同的时间戳。
因此,例如,访问日志具有以下时间戳:
因此,您需要使用 date 在该特定时间戳中打印时间,例如:
对于错误日志,您需要使用不同的方法,因为 error_log 使用这种时间戳:
您可能要记住的唯一一件事是,如果 apache 在一小时前没有记录任何行,则此方法将失败,因为 sed 不会有行匹配。