在用户空间中,我如何确定Linux的软看门狗是否配置为没有出路?

问题描述 投票:14回答:3

我正在为Linux编写系统监视器,并希望包含一些看门狗功能。在内核中,即使关闭/ dev / watchdog,也可以将watchdog配置为继续运行。换句话说,如果守护进程正常退出并关闭/ dev / watchdog,则系统仍会在59秒后重新启动。对于用户而言,这可能是不希望的行为。

我需要让守护程序知道此设置,因为它将影响我处理SIGINT的方式。如果设置为开,则我的守护程序将需要(最好)在退出时启动有序关闭,或(至少)警告用户系统即将重新启动。

有人知道从用户空间获取此设置的方法吗?我在sysconf()中看不到任何值。同样,我需要能够判断是否启用了软件看门狗。

编辑:

Linux提供了非常简单的看门狗界面。进程可以打开/ dev / watchdog,一旦打开设备,内核将开始倒数60秒重新启动,除非将某些数据写入该文件,在这种情况下,时钟将重新设置。]

取决于内核的配置方式,关闭该文件可能会停止倒计时,也可能不会停止倒计时。从文档中:

看门狗可以在没有如果设备导致重启/ dev / watchdog已正确关闭,除非您的内核使用CONFIG_WATCHDOG_NOWAYOUT选项已启用。

我需要能够确定是否在用户空间守护程序中设置了CONFIG_WATCHDOG_NOWAYOUT,以便可以以不同方式处理所述守护程序的关闭。换句话说,如果该设置很高,则简单:

# /etc/init.d/mydaemon stop

...将在59秒内重新引导系统,因为不再有任何内容写入/ dev / watchdog。因此,如果将其设置得很高,我的SIGINT处理程序需要执行其他操作(即,至少警告用户)。

我找不到从用户空间获取此设置的方法:(可以提供任何帮助。

我正在为Linux编写系统监视器,并希望包含一些看门狗功能。在内核中,即使关闭/ dev / watchdog,也可以将watchdog配置为继续运行。换句话说,如果...

c linux watchdog
3个回答
18
投票

啊!深入研究内核的linux/watchdog.hdrivers/watchdog/softdog.c之后,我能够确定软狗ioctl()接口的功能。查看它在struct watchdog_info中宣布的功能:


3
投票

监视程序防止由于软件崩溃或硬件故障而导致系统硬锁定。


-2
投票

我认为看门狗设备驱动程序实际上是供嵌入式平台(或至少受良好控制的平台)使用的,开发人员可以控制它们在使用哪个内核。

© www.soinside.com 2019 - 2024. All rights reserved.