统计日志访问次数,通常取决于日志格式和你想统计的维度(总次数、IP 次数、URL 次数、时间段等)。下面以最常见的 Nginx / Apache 访问日志 为例,介绍几种实用方法。
wc -l access.log
每一行一般代表一次访问(前提是标准格式日志)
awk '{print $1}' access.log | sort | uniq -c | sort -nr
示例输出:
10231 192.168.1.10
8840 10.0.0.5
只看前 10 个 IP:
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head
awk '{print $7}' access.log | sort | uniq -c | sort -nr
$7通常是请求路径(如/index.html)
awk '{print substr($4, 2, 14)}' access.log | sort | uniq -c
或按小时:
awk '{print substr($4, 2, 11)}' access.log | sort | uniq -c
grep " 404 " access.log | wc -l
或:
awk '$9 == 404' access.log | wc -l
grep "192.168.1.10" access.log | wc -l
goaccess access.log -o report.html --log-format=COMBINED
可以贴一段日志样例,我可以帮你写精确的统计命令。
你是想统计哪种日志?