我目前正在使用 ACR122U 读卡器开发 NFC 系统,而不使用构造驱动程序,这会导致这些驱动程序偶尔崩溃。这里的问题是当它崩溃时,整个过程没有崩溃,我的程序继续运行但驱动程序没有。(无需说它使我的代码无用)我知道重新启动崩溃程序但不崩溃驱动程序的方法。我想过使用看门狗来硬重置覆盆子,但不用说重启不是最好的选择,因为它需要时间。(我使用的是第一个 Raspberry)。那么,有没有办法只重启驱动程序,更重要的是,检测何时失败?
经过数小时的研究和试验,我找到了解决自己问题的方法。解决方案实际上非常简单:只是一个后台运行脚本(在我的例子中是我的程序),并使用 grep 进行检查,每两秒:
#!/usr/bin/env bash
command="/your/path/to/your_script"
log="prog.log"
match="error libnfc"
matchnosp="$(echo -e "${match}" | tr -d '[:space:]')"
$command > "$log" 2>&1 &
pid=$!
while sleep 2
do
if fgrep --quiet "$matchnosp" "$log"
then
echo "SOME MESSAGE"
kill $(pidof your_script)
$command > "$log" 2>&1 &
sleep 5
truncate -s 0 $log
echo "SOME OTHER MESSAGE..."
fi
done
当在日志文件中找到与“error libnfc”匹配的消息时,这将重新启动程序。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句