Linux 查看系统日志的几种方法

1次阅读

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

Linux 查看系统日志的几种方法

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/syslogdebian/Ubuntu 的等效日志
  • /var/log/auth.log:用户登录、sudo、SSH 认证记录
  • /var/log/kern.log:内核消息(含硬件、驱动相关)
  • /var/log/dmesg:开机时的内核环缓冲区快照(可用 dmesg 命令实时查看)

可用 lesstailgrep 等工具直接查看,例如:
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 文件更友好,因为它可通过策略控制访问粒度。

text=ZqhQzanResources