我有一个运行 Debian 的 Beaglebone Black,我需要一个在后台运行的脚本,它会每隔几秒检查一次系统是否仍在运行。据我了解,BBB 中的看门狗是基于硬件的,独立于操作系统运行,因此即使操作系统完全卡住,它也可以重启设备(对吗?)。这是来自 logicsupply 的一个非常简单的示例:
#!/usr/bin/env python
import time
import os
os.nice(20)
time.sleep(60) # Wait before starting
wd = open("/dev/watchdog", "w+")
while 1:
wd.write("\n")
wd.flush()
time.sleep(5)
但我找不到更改默认超时的方法。在 C 中它看起来像:
ioctl(fd, WDIOC_SETTIMEOUT, &timeout);
但是在 Python 中调用 ioctl 函数似乎相当晦涩。来自 this discussion似乎 C 宏定义可能具有不同的值,具体取决于硬件。在 Python 中是否有一种方便的方法来解决它们(至少,这个特定的方法,以更改默认的看门狗超时)? 在后台运行脚本的最佳方式是什么,以便它可以使用卡住的操作系统重新启动系统?
最佳答案
This comment通过 Padraic Cunningham已指示我到 manpage for watchdog.conf这是在 AM335x 上配置硬件 WDT 的正确且有效的方法,因此不需要额外的脚本/守护进程:
watchdog-timeout = 10
关于python - Python 中的 Beaglebone Black 看门狗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29750547/