我使用命令创建了软件看门狗设备:
$ 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
。
现在您只需要比较两个时间戳 - 如果看门狗时间戳和启动时间之间的差异足以重新启动 - 答案是肯定的。