在 Linux 中过滤日志内容是日常运维和排障的常用操作,下面按常见场景 + 常用命令给你一个实用总结。
grep "ERROR" /var/log/syslog
只看包含 ERROR 的日志。
grep -i "error" /var/log/syslog
grep -v "DEBUG" /var/log/syslog
不包含 DEBUG 的日志。
grep -n "timeout" /var/log/syslog
grep -E "ERROR|WARN" /var/log/syslog
grep "login" /var/log/syslog | grep "failed"
tail -f /var/log/syslog | grep "ERROR"
实时过滤错误日志(Ctrl+C 退出)。
只看最近 100 行:
tail -n 100 /var/log/syslog | grep "ERROR"
sed -n '/2024-01-01 10:00/,/2024-01-01 11:00/p' /var/log/syslog
awk '$1=="Jan" && $2>=10 && $2<=11' /var/log/syslog
cat app.log | jq 'select(.level=="ERROR")'
awk '$9==500' access.log
过滤 HTTP 状态码为 500 的请求。
journalctl -u nginx.service
只看 nginx 服务日志。
journalctl -u nginx.service -f | grep "error"
journalctl --since "2024-01-01 10:00:00" --until "2024-01-01 11:00:00"
journalctl -p err
只看错误级别。
zgrep "ERROR" /var/log/syslog.1.gz
✅ 查看某 IP 的访问:
grep "192.168.1.100" access.log
✅ 统计错误出现次数:
grep "ERROR" app.log | wc -l
✅ 提取某一字段:
awk '{print $1, $4}' access.log
如果你有具体日志格式或想过滤的内容(比如 Nginx、Docker、Spring Boot 日志),可以直接发样例,我可以帮你写精确命令。