温馨提示×

如何搜索linux日志内容

小樊
42
2026-09-14 14:28:29
栏目: 智能运维

在 Linux 中搜索日志内容,常用方法取决于日志类型(系统日志、应用日志、容器日志等)和搜索需求(关键词、时间范围、实时跟踪等)。下面按场景给你一套实用指南。


一、常见日志文件位置

  • 系统日志(传统):/var/log/messages/var/log/syslog
  • 认证日志:/var/log/secure/var/log/auth.log
  • 内核日志:/var/log/dmesgdmesg 命令
  • 应用日志:通常在 /var/log/<应用名>/
  • systemd 系统日志:journalctl

二、最常用:用 grep 搜索日志内容

1. 基本关键词搜索

grep "error" /var/log/syslog

2. 忽略大小写

grep -i "error" /var/log/syslog

3. 显示行号

grep -n "timeout" /var/log/messages

4. 递归搜索整个日志目录

grep -r "Exception" /var/log/

5. 显示匹配行前后内容

grep -A 5 -B 5 "error" /var/log/syslog
  • -A:后几行
  • -B:前几行
  • -C:前后各几行

6. 使用正则

grep -E "error|fail|timeout" /var/log/syslog

三、结合 tail 实时搜索日志

实时查看并过滤

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

查看最后 100 行并搜索

tail -n 100 /var/log/messages | grep "ssh"

四、按时间范围搜索日志

1. 用 sed 按时间截取

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' /var/log/syslog

2. journalctl 按时间(推荐 systemd)

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

五、systemd 日志(journalctl)搜索

按服务

journalctl -u nginx

按关键词

journalctl | grep "error"

实时跟踪

journalctl -f

按优先级(错误以上)

journalctl -p err

六、大文件日志搜索技巧

用 zgrep 搜压缩日志

zgrep "error" /var/log/syslog.1.gz

用 less 交互搜索

less /var/log/syslog
  • 输入 /关键词 回车搜索
  • n 下一个,N 上一个

七、实用组合示例

# 查找今天某服务的错误
journalctl -u docker --since today | grep -i error

# 统计错误出现次数
grep -c "error" /var/log/syslog

# 看某个 IP 的访问
grep "192.168.1.1" /var/log/nginx/access.log

如果你能告诉我:

  • 系统日志 / 应用日志 / 容器日志
  • 想搜 关键词 / 时间 / 报错

我可以直接给你精准命令。

0