内核崩溃挂起后如何查看服务器中的日志?

Low*_*ong 10 linux kernel-panic linux-kernel

我正在运行一台生产 gentoo Linux 机器,最近有一种情况,服务器挂在我共同定位的地方,当我到达那里时,我注意到服务器挂在了似乎是内核崩溃挂起的地方。我通过硬重启重新启动了机器,但很失望地发现我无法在任何地方找到有关机器挂起原因的任何证据。

当我进行硬重启时,消息本身是否会丢失,或者是否有设置我可以在 syslog-ng 或 sysctl 中的某处进行设置以至少保留错误日志,以便我可以防止发生此类事故在将来 ?顺便说一下,我正在运行 2.6.x 内核。

提前致谢。

Vin*_*ent 5

要记录内核崩溃,使用 netconsole 比使用串行链接容易得多;)

在 ubuntu wiki 上有一个关于它的有用条目,可以在其他 linux 风格上使用......例如帮助我使用 archlinux。

请注意,也可以在启动时设置 netconsole。


Phi*_*ack 4

一般来说,在这些情况下,我会设置一个远程串行控制台,然后确保记录控制台上出现的所有内容。您可以通过 rs-232 电缆将机器的串行端口连接到另一台机器来完成此操作。如今,随着串行端口逐渐消失,这可能会变得有点棘手,但我认为大多数服务器仍然拥有它们。

然后在另一台计算机上运行conserver并配置控制台日志记录。这提供了一种在控制台上记录所有内容并提供系统备用登录路径的好方法。

如果您不想设置和管理另一个 Linux 机器,另一种方法是安装串行控制台服务器。Avocent、Cyclades 和 Raritan 等多家公司生产的这些盒子提供了 2-48 个串行端口的网络接口。然而,这种事情当然会比仅仅设置另一个 Linux 盒子更昂贵。

  • 除了 Phil 的回答之外,请注意,许多(大多数?)*NIX 系统会在出现紧急情况时将内核/RAM 转储到交换分区,并将转储复制到 `/var/crash` 或 `/var/adm /crash` 重新启动后允许您使用调试器攻击它并查看发生恐慌的位置。不过,串行控制台仍然是一个不错的选择,因为它可以让您看到服务器在“panic()”之前执行的最后一件事是什么。 (4认同)