如何验证看门狗是否触发了节点重启?

如何验证看门狗是否触发了节点重启?

我使用命令创建了软件看门狗设备:

$ sudo modprobe softdog soft_margin=60

在操作系统日志中可以看到软件看门狗已初始化:

Jul 12 09:49:00 patroni4 kernel: softdog: Software Watchdog Timer: 0.08 initialized. soft_noboot=0 soft_margin=60 sec soft_panic=0 (nowayout=0)

为了通过我执行的看门狗触发节点重新启动echo a | sudo tee /dev/watchdog

节点已重新启动,但在日志中没有任何信息表明重新启动是由看门狗触发的。如果我soft_noboot=1在操作系统日志中设置选项,则会出现消息softdog: Triggered - Reboot ignored

根据看门狗的实现,当看门狗触发节点重新启动时,应该有日志消息。 https://github.com/spacex/kernel-centos7/blob/master/drivers/watchdog/softdog.c

static void watchdog_fire(unsigned long data)
{
    if (soft_noboot)
        pr_crit("Triggered - Reboot ignored\n");
    else if (soft_panic) {
        pr_crit("Initiating panic\n");
        panic("Software Watchdog Timer expired");
    } else {
        pr_crit("Initiating system reboot\n");
        emergency_restart();
        pr_crit("Reboot didn't ?????\n");
    }
}

操作系统:CentOS Linux 版本 7.9.2009(核心)Linux lin1 3.10.0-1160.62.1.el7.x86_64

如何验证看门狗是否触发了重启?为什么不记录此信息?我可以以某种方式启用日志记录吗?

谢谢你的信息

答案1

根据您的看门狗,您可以请求它的最后一个日志,也可以在重新启动之前创建一个具有当前时间戳的标志文件。

last reboot您始终可以通过命令或 向操作系统请求上次启动时间last reboot -n1

现在您只需要比较两个时间戳 - 如果看门狗时间戳和启动时间之间的差异足以重新启动 - 答案是肯定的。

相关内容