温馨提示×

怎样搜索linux异常日志

小樊
42
2026-10-14 06:15:03
栏目: 智能运维

在 Linux 系统中,“搜索异常日志”通常指从系统或应用日志中找出错误、警告、异常堆栈等信息。下面按常见场景 + 实用命令给你一个清晰指南。


一、Linux 日志一般在哪?

1. 传统路径(Syslog)

/var/log/messages      # 系统一般日志(CentOS/RHEL)
/var/log/syslog        # 系统一般日志(Ubuntu/Debian)
/var/log/dmesg         # 内核启动信息
/var/log/secure        # 安全、登录相关
/var/log/cron          # 定时任务

2. 应用日志

/var/log/nginx/
/var/log/httpd/
/var/log/mysql/
/var/log/app/(自定义)

3. systemd 日志(推荐)

journalctl

二、最常用:搜索“异常 / 错误”

1. 用 grep 搜关键字

grep -i "error" /var/log/syslog
grep -i "fail" /var/log/messages
grep -iE "error|exception|warn|fail" /var/log/app.log

常用关键词:

  • error
  • exception
  • fail / failed
  • warning
  • timeout
  • denied
  • panic

2. 显示上下文(非常重要)

grep -i "error" -C 5 /var/log/app.log
# -C 5 表示前后各 5 行

或:

grep -i "error" -A 10 -B 5 /var/log/app.log

3. 实时查看异常

tail -f /var/log/syslog | grep -i error

三、用 journalctl(systemd 系统强烈推荐)

1. 查看所有错误

journalctl -p err -xb

级别说明:

  • err
  • crit
  • alert
  • emerg

2. 某个服务的异常

journalctl -u nginx -p err
journalctl -u docker.service --since "1 hour ago"

3. 实时跟踪

journalctl -f
journalctl -u mysql -f

四、按时间排查异常

1. 指定时间段

journalctl --since "2026-01-21 10:00" --until "2026-01-21 11:00"

2. 最近 N 分钟

journalctl --since "30 min ago"

五、高级搜索技巧

1. 统计异常次数

grep -i "error" /var/log/syslog | wc -l

2. 按异常类型聚合

grep -i "error" /var/log/syslog | awk '{print $5}' | sort | uniq -c | sort -nr

3. 搜索 Java 异常堆栈

grep -n "Exception" app.log
sed -n '100,200p' app.log

六、自动化/工具推荐

  • logrotate:防止日志过大
  • lnav:日志浏览器(支持高亮)
  • ELK / Grafana Loki:大规模日志分析
  • fail2ban:自动识别异常登录

七、一个“通用排查模板”

# 1. 系统级
journalctl -p err -xb

# 2. 应用级
tail -n 500 /var/log/app.log | grep -i error

# 3. 实时
tail -f /var/log/app.log | grep -i exception

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

  • 你用的是 CentOS / Ubuntu / 容器?
  • 是 系统异常 还是 某个应用(Java / Nginx / Docker)?

我可以直接给你针对你环境的命令。

0 踩