Linux 日志分析入门
日志是 Linux 排错的主要线索。服务为什么启动失败、谁登录过系统、磁盘为什么满、网络为什么断,很多答案都藏在日志里。
常见日志位置
传统日志通常在:
/var/log
常见文件包括:
/var/log/syslog:Debian/Ubuntu 常见系统日志。/var/log/messages:部分 RHEL 系系统常见系统日志。/var/log/auth.log:认证相关日志,Debian/Ubuntu 常见。/var/log/secure:认证相关日志,RHEL 系常见。/var/log/kern.log:内核日志,部分系统存在。
使用 systemd 的系统还会把日志存入 journal,用 journalctl 查看。
从最近日志看起
查看文件末尾:
tail -n 100 /var/log/syslog
实时跟踪:
tail -f /var/log/syslog
如果系统没有 /var/log/syslog,使用:
journalctl -n 100
按服务查看
systemd 服务日志:
journalctl -u 服务名 -n 100
实时查看:
journalctl -u 服务名 -f
只看本次启动:
journalctl -b -u 服务名
搜索关键词
常见关键词:
errorfaileddeniedtimeoutrefusedwarning
忽略大小写搜索:
grep -i "error" app.log
带行号:
grep -n -i "failed" app.log
在多个日志中搜索:
grep -R -n -i "denied" /var/log 2>/dev/null
按时间 缩小范围
如果你知道问题发生在某个时间点,就不要从头翻日志。
使用 journal:
journalctl --since "2026-07-24 09:00" --until "2026-07-24 10:00"
普通文本日志可以先用 less 打开,再用 / 搜索日期或关键词。
看日志上下文
只看到一行错误往往不够。可以用 grep -C 显示上下文:
grep -C 3 -i "error" app.log
含义是显示匹配行前后各 3 行。
也可以用:
grep -A 5 -B 5 -i "error" app.log
-A 是 after,-B 是 before。