在 Linux 下过滤关键日志,通常结合 日志文件位置 + 过滤工具 + 关键词/时间/级别 来实现。下面按「常用场景 → 具体命令」给你一个实用速查指南。
/var/log/messages # 通用系统日志(部分系统)
/var/log/syslog # Debian/Ubuntu 系统日志
/var/log/secure # 登录、SSH、安全相关(RHEL/CentOS)
/var/log/dmesg # 内核日志
/var/log/nginx/ # Nginx 日志
/var/log/application/ # 业务自定义日志
/var/log/journal/ # systemd 日志存储
grep "error" /var/log/syslog
grep -i "failed" /var/log/secure
常用参数:
-i 忽略大小写
-n 显示行号
-C 3 显示上下 3 行
--color 高亮
示例:
grep -i -C 3 "error" /var/log/messages
grep -E "error|fail|exception" /var/log/syslog
grep "error" /var/log/syslog | grep -v "timeout"
grep "2025-01-21" /var/log/syslog
grep "2025-01-21 10:" /var/log/syslog
tail -f /var/log/syslog | grep "error"
tail -f /var/log/syslog | grep -E "error|fail|warn"
journalctl
journalctl -u nginx
journalctl -u sshd
journalctl --since "2025-01-21 10:00" --until "2025-01-21 11:00"
journalctl -p err # 错误
journalctl -p warning # 警告
优先级:
0 emerg
1 alert
2 crit
3 err
4 warning
grep "Failed password" /var/log/secure
grep "Accepted password" /var/log/secure
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr
awk '/error/ {print $1,$2,$3,$NF}' /var/log/syslog
grep "error" /var/log/syslog | wc -l
✅ 排查线上问题
journalctl -u your_service -p err --since "10 min ago"
✅ 实时看错误
tail -f /var/log/syslog | grep -i error
✅ 安全审计
grep "Failed" /var/log/secure | tail -n 50
你可以直接说:
“我想过滤 Nginx 5xx 日志”
“我想监控 SSH 登录失败”
“我想实时看 Java 异常”