访问日志时间跨度

访问日志时间跨度

如何输出access_log的第一次和最后一次时间,以便快速查看access_log记录的时间范围?输出可能如下所示:

[21/Aug/2014:06:29:41 -0400] :::: [21/Aug/2014:10:29:41 -0400]

我的access_log路径是:

/var/www/vhosts/example.com/statistics/logs/access_log

访问日志条目示例:

123.123.123.123 - - [21/Aug/2014:08:12:30 -0400] "GET /wp-content/themes/simple/comment-style.css HTTP/1.1" 200 6221 "http://example.com/?p=1" "Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Firefox/31.0"

答案1

如果您的日志条目不严格按时间顺序排列,在 GNU 系统上,您可以执行以下操作:

#          1         2
# 12345678901234567890
# [21/Aug/2014:06:29:41 -0400]

< access.log sed -n 's/^[^[]*\(\[[^]]*]\).*/\1/p' |
  sort -k1.9n -k1.5M -k1.2n -k1.14,1.21 |
  sed -n '1p;$p' | paste -sd -

每年夏令时和冬令时切换时,结果可能会出现错误。

答案2

您可以使用sed

sed -n '1p;$p' /var/www/vhosts/example.com/statistics/logs/access_log

或者awk

awk 'NR==1;END{print}' /var/www/vhosts/example.com/statistics/logs/access_log

还有其他方法也使用tailhead

相关内容