Linux日志分析需准确定位日志文件、高效过滤关键行、按时间范围筛选,并善用journalctl处理二进制日志;掌握这些方法可快速定位问题根源。

Linux日志分析不靠盲翻,靠定位、过滤和关联。掌握几个关键点,就能从海量日志里快速揪出问题根源。
看对日志文件,少走一半弯路
不同日志记录不同事情,先搞清该查哪个:
-
/var/log/messages(RHEL/CentOS)或 /var/log/syslog(Debian/Ubuntu):系统级通用事件,如服务启停、硬件告警
-
/var/log/auth.log(Debian系)或 /var/log/secure(RHEL系):登录失败、SSH尝试、sudo操作、密码修改等安全相关行为
-
/var/log/kern.log:内核报错、驱动异常、OOM killer触发等底层问题
-
/var/log/btmp:错误登录记录(二进制,用 lastb 查)
-
/var/log/wtmp:成功登录/登出、系统重启关机历史(用 last 查)
- Web服务日志在 /var/log/nginx/ 或 /var/log/apache2/ 下,重点关注 access.log 和 error.log
用对命令,三秒筛出关键行
别用 cat 从头翻,直接上高效组合:
- 实时盯住新日志:tail -f /var/log/syslog
- 查最近100行错误:tail -n 100 /var/log/syslog | grep -i "error\|fail\|denied"
- 带上下文看异常:grep -C 3 "segmentation fault" /var/log/messages(前后各3行)
- 统计某类失败次数:grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr(列出暴力IP及频次)
- 排除干扰信息:grep "error" /var/log/syslog | grep -v "debug\|info"
时间范围一框就准,避免大海捞针
故障往往发生在某个窗口期,按时间切片最省力:
- 查 systemd 日志近2小时:journalctl --since "2 hours ago"
- 查某服务指定时段日志:journalctl -u nginx --since "2025-12-12 14:00:00" --until "2025-12-12 15:30:00"
- 查文本日志中某分钟段(如12月12日14:22):grep "Dec 12 14:22" /var/log/messages(注意系统日志默认用本地时间+缩写月份)
- 查压缩的老日志:zgrep "timeout" /var/log/syslog.2.gz
别漏掉二进制日志和结构化查询
systemd 系统默认用 journalctl,它比纯文本更灵活:
- 按优先级过滤:journalctl -p err..emerg(只看错误及以上)
- 按进程ID查:journalctl _PID=1234
- 导出为JSON便于后续处理:journalctl -u ssh --since today -o json
- 遇到 binary file matches 提示?那是 grep 遇到 journal 的二进制存储,改用 journalctl 即可,不用解包
基本上就这些。熟练之后,一次命令组合就能代替手动滚动几百行——不是日志太多,是方法没选对。
以上就是Linux日志怎么分析_关键技巧整理帮助提高效率【技巧】的详细内容,更多请关注php中文网其它相关文章!