我使用命令创建了软件监视设备:
$ sudo modprobe softdog soft_margin=60
在OS日志中,可以看到初始化了软件监视狗:
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。
节点重新启动,但在日志中没有任何信息表明,重启是由看门狗触发的。如果我在OS日志中设置了选项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
如何验证是否由看门狗触发了重新引导?为什么没有记录此信息?我可以以某种方式启用日志吗?
谢谢你提供的信息
发布于 2022-07-12 22:42:55
根据您的看门狗,您可以请求它的最后一个日志,或者只是创建一个标志文件与当前时间戳,然后重新启动。
您始终可以通过命令last reboot或last reboot -n1从操作系统请求上一次启动时间。
现在,您只需要比较这两种时间戳--如果看门狗的时间戳和引导时间之间的差异足以重新启动--答案是肯定的。
https://unix.stackexchange.com/questions/709624
复制相似问题