如何检查systemd硬件看门狗状态

如何检查systemd硬件看门狗状态

如何使用 systemd 检查硬件看门狗的状态?

util-linux您可以使用打印wdctl一些信息的命令,但这并不总是有效(例如在 Raspberry Pi 3 或更高版本上)。以 Pi 3 为例:

# wdctl /dev/watchdog0
wdctl: cannot read information about /dev/watchdog0: No such file or directory
# wdctl /dev/watchdog
wdctl: cannot read information about /dev/watchdog: No such file or directory

然而看门狗似乎是活跃的:

# dmesg | grep watchdog
[    6.985782] bcm2835-wdt bcm2835-wdt: Broadcom BCM2835 watchdog timer
[   17.190956] systemd[1]: Using hardware watchdog 'Broadcom BCM2835 Watchdog timer', version 0, device /dev/watchdog
[   17.206391] systemd[1]: Set hardware watchdog to 15s.

那么是否有一个 systemd 特定的命令可以用来显示硬件看门狗的当前状态以及 systemd 本身正在用它做什么呢?

请注意,旧的看门狗服务不再适用,因为这是在 systemd 获得本机硬件看门狗支持之前:

# systemctl status watchdog
Unit watchdog.service could not be found.

我正在执行一个命令,该命令提供了与 类似的信息wdctl,其中看门狗定时器处于活动状态、正在使用中,以及当前超时设置为多少。有点像systemctl list-timers但对于硬件看门狗。

答案1

看门狗是专用设备。这解释了您报告的 wdctl 输出。

但是,所有看门狗设备都将其设置导出到 /sys

然后您应该能够在 /sys/class/watchdog/* 下找到它们

如果你想要一个命令,那么可以满足grep . /sys/class/watchdog/*/*你的需要吗?

答案2

我想知道同样的事情并浏览类似的问题,我得出以下结论:

sudo strace -t -e ioctl  -p1  | grep WDIOC_KEEPALIVE

在超时间隔的一半处,您应该看到类似以下内容:

01:15:47 ioctl(9, WDIOC_KEEPALIVE)      = 0  
...

这用于strace监视pid 1( systemd init) 进程中的所有 ioctl 调用,然后过滤掉WDIOC_KEEPALIVE. systemd 用于WDIOC_KEEPALIVE“ping”看门狗硬件并防止其导致重新启动。

相关内容