在 Linux 中过滤日志内容非常常见,常用工具包括 grep、awk、sed、less、tail、journalctl 等。下面按常见场景给你整理一份实用指南。
grep 过滤日志(最常用)grep "error" /var/log/messages
忽略大小写:
grep -i "error" /var/log/messages
grep -C 5 "error" app.log # 前后各5行
grep -B 5 "error" app.log # 前5行
grep -A 5 "error" app.log # 后5行
grep -E "error|fail|exception" app.log
grep -v "info" app.log
grep -r "error" /var/log/
sed 按时间段过滤假设日志格式:
2025-01-20 10:00:01 ...
sed -n '/2025-01-20 10:00/,/2025-01-20 11:00/p' app.log
awk 按时间过滤awk '/2025-01-20 10:/' app.log
tail -f /var/log/nginx/access.log | grep "404"
只看某个 IP:
tail -f access.log | grep "192.168.1.1"
awk 做高级过滤awk '$9 == 404' access.log
awk '$9 >= 500 && /error/' app.log
journalctl -u nginx
journalctl --since "2025-01-20 10:00" --until "2025-01-20 11:00"
journalctl -p err
less app.log
常用操作:
/error 搜索n 下一个N 上一个q 退出| 日志 | 路径 |
|---|---|
| 系统日志 | /var/log/messages / /var/log/syslog |
| 安全日志 | /var/log/secure |
| Nginx | /var/log/nginx/ |
| Docker | journalctl -u docker |
| 应用日志 | 通常在 /var/log/app/ |
grep " 500 " /var/log/nginx/access.log | grep "$(date +%d/%b/%Y)"
grep -A 10 "Exception" app.log
如果你有 具体日志格式 或 想过滤的具体内容(比如 IP、状态码、某个时间段),可以直接贴一段日志,我可以帮你写精确过滤命令。