解读 Debian 日志的核心在于定位日志文件、理解日志级别以及使用合适的工具进行过滤。Debian 系统主要使用 rsyslog 或 systemd-journald 来记录系统日志。
以下是详细的解读指南:
根据 Debian 版本和配置,日志主要分为两类:
位于 /var/log/ 目录下,可以直接用 cat, less, tail 查看。
| 日志文件 | 内容说明 |
|---|---|
/var/log/syslog |
最常用。记录系统通用信息、服务启动/停止、报错等。 |
/var/log/messages |
记录一般系统消息(有时不包含调试信息)。 |
/var/log/auth.log |
安全相关。记录 SSH 登录、sudo 使用、su 切换等认证信息。 |
/var/log/kern.log |
内核日志(Kernel logs),记录驱动、硬件故障等。 |
/var/log/dpkg.log |
软件包管理日志(安装、卸载 apt/dpkg 操作)。 |
/var/log/boot.log |
系统启动时的日志。 |
/var/log/Xorg.0.log |
图形界面(X11)日志。 |
/var/log/nginx/ 或 /var/log/apache2/ |
特定 Web 服务的访问和错误日志。 |
现代 Debian (8+) 使用 systemd,journalctl 是查看日志的主要工具。这些日志是二进制的,不能直接用文本编辑器打开。
journalctljournalctl -bjournalctl -f (类似 tail -f)一条标准的 Debian 日志通常包含四个关键部分:时间戳、主机名、服务/进程名、具体消息。
示例:
Jan 20 10:30:01 debian-server CRON[1234]: (root) CMD (command -v debian-sa1 > /dev/null && debian-sa1 1 1)
Jan 20 10:30:01: 发生时间。debian-server: 主机名。CRON[1234]: 进程/服务名及 PID(进程ID)。这里表示 CRON 守护进程,PID 是 1234。(root) CMD (...): 具体日志内容。表示 root 用户执行了某个命令。在日志中,尤其是 syslog 中,你可能会看到类似 error, warn, info 等关键字。了解这些有助于快速判断问题严重性:
| 级别 | 关键字 | 含义 | 应对策略 |
|---|---|---|---|
| 0 | emerg | 系统不可用 | 立即处理,系统可能已崩溃。 |
| 1 | alert | 必须立即采取行动 | 紧急修复。 |
| 2 | crit | 严重情况 | 硬件或核心服务故障。 |
| 3 | err | 错误 | 服务启动失败或运行出错。 |
| 4 | warning | 警告 | 潜在问题(如磁盘空间不足),需留意。 |
| 5 | notice | 注意 | 正常但重要的情况。 |
| 6 | info | 信息 | 普通运行信息(如服务启动成功)。 |
| 7 | debug | 调试 | 开发调试用,通常默认不开启。 |
查看 /var/log/auth.log:
sudo grep "Failed password" /var/log/auth.log
使用 systemd 查询:
sudo journalctl -u nginx.service --since "10 minutes ago"
error 或 failed。常见错误如 Address already in use (端口被占用) 或 syntax error (配置文件写错)。last reboot
sudo journalctl -p 3 -xb
-p 3 表示只显示错误 (Error) 及以上级别的日志;-xb 表示本次启动的日志。I/O error,可能是硬盘坏了;看到 MCE (Machine Check Exception),可能是 CPU 或内存硬件故障。| 需求 | 命令 |
|---|---|
| 实时查看最新日志 | sudo tail -f /var/log/syslog 或 journalctl -f |
| 查看特定服务日志 | journalctl -u 服务名 (如 ssh, docker) |
| 按时间过滤 | journalctl --since "2023-10-01" --until "2023-10-02 12:00" |
| 查看内核日志 | dmesg 或 journalctl -k |
| 只看错误日志 | journalctl -p err..alert |
| 搜索关键词 | grep -i "error" /var/log/syslog |
journalctl:在 Debian 新版本中,它比直接看文本文件更强大,支持按服务、时间、级别过滤。auth.log:如果你怀疑服务器被入侵,第一时间看这里。tail -f:当重启某个服务时,开另一个终端实时盯着日志,能立刻看到报错。