通用日志
100%

日志 · 第 3 课

通用日志

学习如何查找、过滤、跟踪并关联常见的 Linux 系统日志。

通用系统日志汇集多个来源的日常通知、警告和错误。它们是很有用的起点,但文件名和内容取决于路由策略,并不是 Linux 的统一保证。

查找相关来源

根据发行版和配置的不同,通用消息可能出现在 /var/log/syslog/var/log/messages、systemd journal 或多个目的地中。首先确定主机和事件时间范围,然后检查可用来源:

$ ls -lh /var/log
$ journalctl --since '2026-08-31 09:00' --until '2026-08-31 09:15'

应用程序日志可能位于自己的子目录或外部服务中。身份验证、审计、软件包、数据库和 Web 服务器记录也可能有意与通用日志流分开。

为什么不应假定每台 Linux 主机上都有 /var/log/messages

检查文本日志

使用 less 进行可控浏览,使用 tail 查看最新记录:

$ sudo less /var/log/syslog
$ sudo tail -n 100 /var/log/messages

在有限时间的重现过程中,可用 tail -F FILE 跟踪新追加的行。与简单快照不同,当文件在轮转期间被替换时,-F 会重试。使用 Ctrl-C 停止跟踪,避免长时间保持范围过大的特权会话。

在受控重现过程中,tail -F 有什么用途?

过滤时保留上下文

应搜索有边界的文件或 journal 时间段,而不是一开始就通过管道处理无限的实时流:

$ grep -n -C 3 'connection refused' /var/log/example.log
$ journalctl -u example.service --since '10 minutes ago' --grep='connection refused'

大小写、措辞、速率限制和本地化都可能让字面搜索遗漏内容。既要记录成功事件,也要记录失败事件,并保留周边行,因为原因可能早于可见错误。

为什么要包含匹配错误周围的日志行?

包含轮转和归档日志

一次事件可能跨越日志轮转边界。活动文件、编号归档和压缩文件可能分别包含同一事件序列的不同部分。zgrepzless 等工具可以读取 gzip 压缩归档:

$ sudo zgrep -n 'connection refused' /var/log/example.log*.gz

应按实际时间戳排列结果,而不是只看文件后缀。复制证据前,应保留元数据并限制访问,因为日志可能包含个人数据或凭据。

事件跨越一次日志轮转时应该检查什么?

课程已完成

你已完成 通用日志

现在,你可以跨文件、journal 和轮转边界调查通用日志。

  • 查明日志目的地,而不是假定存在统一文件名。

  • 阅读有边界的时间段,只在重现问题时进行跟踪。

  • 保留匹配记录周围的时间上下文。

  • 包含轮转归档,并保护敏感证据。

保存学习进度

创建免费账户即可保存本课进度,并在任意设备上继续学习。

创建免费账户
下一节
返回 日志