温馨提示×

怎么统计Linux日志行数

小樊
94
2026-08-02 06:47:55
栏目: 智能运维

在 Linux 中统计日志行数,常见做法取决于你想统计的是整个文件、某段时间、还是匹配关键字的行。下面按常见场景给你总结。


一、统计整个日志文件的行数

1️⃣ 使用 wc

wc -l /var/log/syslog

示例输出:

12345 /var/log/syslog

只显示行数(不显示文件名):

wc -l < /var/log/syslog

二、统计正在变化的日志(如实时日志)

2️⃣ 统计当前已写入的行数

wc -l /var/log/nginx/access.log

3️⃣ 实时统计(持续观察)

tail -f /var/log/nginx/access.log | wc -l

⚠️ 注意:这个命令在 Ctrl+C 后才会输出统计结果。


三、统计包含关键字的日志行数

4️⃣ 使用 grep

grep -c "ERROR" /var/log/syslog

忽略大小写:

grep -ci "error" /var/log/syslog

统计多个关键字(或关系):

grep -c -E "ERROR|WARN" /var/log/syslog

四、按时间范围统计日志行数

5️⃣ 适用带时间戳的日志(如 nginx、tomcat)

grep "2025-01-20" /var/log/nginx/access.log | wc -l

指定时间段:

grep "2025-01-20 10:" /var/log/nginx/access.log | wc -l

五、统计压缩日志(.gz)

6️⃣ 不解压直接统计

zcat /var/log/syslog.1.gz | wc -l

或:

zgrep -c "ERROR" /var/log/syslog.1.gz

六、多个日志文件一起统计

7️⃣ 统计目录下所有日志

cat /var/log/*.log | wc -l

只统计匹配的文件:

find /var/log -name "*.log" -exec wc -l {} +

七、统计最近 N 行日志

tail -n 1000 /var/log/syslog | wc -l

八、常见组合示例

✅ 统计 1 小时内 ERROR 日志数量:

grep "2025-01-20 10:" /var/log/app.log | grep -c "ERROR"

✅ 统计 nginx 今天访问量:

grep "$(date '+%d/%b/%Y')" /var/log/nginx/access.log | wc -l

九、注意点

  • wc -l 统计的是 换行符数量,如果最后一行没有换行可能少算一行
  • 大文件建议用 grep -c,比 grep | wc -l 更快
  • 实时日志推荐 tail -f

如果你愿意,可以告诉我:

  • 日志路径
  • 日志格式(是否有时间)
  • 想统计的内容(ERROR、访问量、时间段)

我可以帮你写一条完全适用的命令。

0 踩