运维救援:日志分析与硬核排障

当系统表现异常(如进程高负载、开机卡死、文件无法删除)时,你的第一反应应该是查阅日志。本章节将教你如何使用专业的排障工具集。


1. 统一日志中心:journalctl

Systemd 所有的日志都由 journald 统一管理。

场景命令说明
实时滚动journalctl -f类似 tail -f
特定服务journalctl -u nginx只看 Nginx 的日志
报错过滤journalctl -p err -b只看本次启动的错误级别日志
时间范围journalctl --since "1 hour ago"查看过去一小时内的日志
清理空间sudo journalctl --vacuum-time=7d清理超过 7 天的旧日志

2. 内核的声音:dmesg

dmesg 输出的是内核环形缓冲区的信息。内存报错 (OOM)硬盘坏道 (I/O error)显卡驱动崩溃 都会记录在这里。

# 查看最后 20 行内核消息,并以人类易读的时间格式显示
sudo dmesg -T | tail -n 20

3. 硬核诊断工具:侦探的手法

当日志没有报错,但进程表现异常(如 CPU 100% 但不处理任务)时,你需要深入“进程内部”。

3.1 追踪系统调用:strace

strace 可以让你看到一个进程此刻正在与内核聊什么(打开了什么文件、发起了什么网络连接)。

# 跟踪 PID 为 1234 的进程正在进行的系统调用
sudo strace -p 1234
 
# 统计该进程最耗时的系统调用是哪个
sudo strace -cp 1234

3.2 查找文件占用:lsof

“文件已删除但空间没释放?”可能是某个进程还没关掉文件句柄。

# 谁在占用 /var/log/syslog?
sudo lsof /var/log/syslog
 
# 谁在监听 80 端口?
sudo lsof -i :80

4. 实战:开机卡死 (Boot Failure) 定位

如果你的 Linux 开机卡在黑屏或进度条,请按以下步骤自救:

  1. 在 Grub 菜单选择 Advanced options
  2. 选择带有 (recovery mode) 的内核进入。
  3. 进入 root 终端进行修复。

如果系统彻底无法进入,使用 Live USB 启动:

  1. 挂载原硬盘根目录:mount /dev/sda1 /mnt
  2. 进入环境:arch-chroot /mnt (或手动挂载 /sys, /proc 后 chroot)
  3. 重新安装引导或修复配置。

5. 结业练习

Navigation