linux系统日志排查需掌握journalctl、/var/log/文件和dmesg三类方法:journalctl用于systemd二进制日志,/var/log/含messages、auth.log等文本日志,dmesg专查内核环缓冲区。

Linux 系统日志是排查故障、监控服务和审计操作的重要依据。不同日志位置和工具对应不同用途,掌握几种常用方法能快速定位问题。
使用 journalctl 查看 systemd 日志
现代 Linux 发行版(如 centos 7+、ubuntu 16.04+、Fedora)默认用 systemd-journald 管理日志,journalctl 是其命令行接口,日志保存在二进制格式中,无需解析文本文件。
- 查看全部日志:
journalctl - 查看最近 100 行:
journalctl -n 100 - 实时跟踪新日志:
journalctl -f(类似tail -f) - 按服务过滤:
journalctl -u sshd.service(查 SSH 服务) - 按优先级筛选:
journalctl -p err(只显示错误及以上级别) - 指定时间范围:
journalctl --since "2024-05-01" --until "2024-05-02"
读取传统 syslog 文件(/var/log/)
即使启用了 journald,很多系统仍保留传统日志路径 /var/log/,常见文件包括:
- /var/log/messages:通用系统日志(RHEL/CentOS)
- /var/log/syslog:debian/Ubuntu 的等效日志
- /var/log/auth.log:用户登录、sudo、SSH 认证记录
- /var/log/kern.log:内核消息(含硬件、驱动相关)
- /var/log/dmesg:开机时的内核环缓冲区快照(可用
dmesg命令实时查看)
可用 less、tail、grep 等工具直接查看,例如:sudo tail -n 50 /var/log/auth.log | grep "Failed password"
用 dmesg 查看内核与硬件日志
dmesg 直接读取内核环缓冲区(ring buffer),适合诊断启动问题、设备识别异常、内存错误等底层事件。
- 查看全部内核日志:
dmesg - 高亮重要信息:
dmesg -l err,warn - 按设备过滤:
dmesg | grep -i "usb|nvme|eth" - 清空缓冲区(需 root):
sudo dmesg -C(慎用,仅调试时临时清理)
结合 grep 和时间筛选提升效率
日志量大时,精准过滤很关键。注意几个实用技巧:
- 用
grep -i忽略大小写,如grep -i "out of memory" - 用
grep -A2 -B2显示匹配行前后各 2 行,便于看上下文 - 用
awk '/May 10/ && /sshd/ {print}' /var/log/messages按日期和服务提取 - 用
date -d "1 hour ago" "+%b %d %H:%M"生成 syslog 时间格式,辅助手动定位
不复杂但容易忽略:多数日志需要 sudo 权限 才能完整读取,尤其是 auth.log、secure 和 kernel 日志。权限不足时,journalctl 通常比直接 cat 文件更友好,因为它可通过策略控制访问粒度。