在 Linux 中搜索日志内容,常用的方法取决于日志类型、搜索复杂度以及是否需要实时查看。下面按常见场景给你一个实用总结。
grep 搜索日志内容grep "error" /var/log/messages
grep -i "error" /var/log/messages
grep -n "error" /var/log/messages
grep -r "error" /var/log
grep -C 5 "error" app.log # 前后各5行
grep -A 5 "error" app.log # 后5行
grep -B 5 "error" app.log # 前5行
日志通常带时间,例如:
2024-01-21 10:30:00 INFO ...
grep "2024-01-21 10:" app.log
grep -E "2024-01-21 (10|11):" app.log
tail -f /var/log/app.log
tail -f app.log | grep "error"
less 浏览并搜索(大文件推荐)less app.log
在 less 中:
/error → 向下搜索?error → 向上搜索n → 下一个结果q → 退出✅ 适合超大日志文件,不会一次性加载
如果日志由 systemd 管理:
journalctl -u nginx
journalctl -u nginx -f
journalctl --since "2024-01-21 10:00" --until "2024-01-21 11:00"
journalctl | grep "error"
grep -E "ERROR|WARN" app.log
grep -c "error" app.log
| 类型 | 路径 |
|---|---|
| 系统日志 | /var/log/messages 或 /var/log/syslog |
| 认证日志 | /var/log/secure |
| Nginx | /var/log/nginx/error.log |
| Docker | docker logs 容器名 |
| Java 应用 | catalina.out / app.log |
✅ 查找最近 1 小时内的错误:
journalctl --since "1 hour ago" | grep -i error
✅ 搜索并导出:
grep "NullPointerException" app.log > error.txt
如果你愿意,可以告诉我:
我可以帮你写一条最精准的命令。