У меня есть Beaglebone Black с Debian, и мне нужен скрипт, работающий в фоновом режиме, который каждые несколько секунд будет проверять, работает ли система. Насколько я понимаю, watchdog в BBB аппаратный и работает независимо от ОС, поэтому он может перезагрузить устройство, даже если ОС полностью зависла (верно?). Вот очень простой пример из logicssupply:
#!/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);
Но вызов функций ioctl в Python кажется довольно неясным. Из этого обсуждения кажется, что определения макросов C могут иметь разные значения в зависимости от оборудования. Есть ли удобный способ решить их (по крайней мере, этот конкретный, чтобы изменить тайм-аут сторожевого таймера по умолчанию) в Python? И как лучше запустить скрипт в фоновом режиме, чтобы он мог перезагрузить систему с зависшей ОС?