在Raspberry Pi上重新启动崩溃的驱动程序

时间:2017-07-12 15:48:50

标签: linux raspberry-pi raspbian

我目前正在研究使用ACR122U阅读器的NFC系统,而不是使用构造函数驱动程序导致这些驱动程序的偶然崩溃。 这里的问题是,当它崩溃时,整个过程不会崩溃,我的程序继续运行,但驱动程序没有。 (不必说它使我的代码无用) 我知道重新启动崩溃的程序但不是崩溃的驱动程序的方法。我想过使用看门狗硬重置树莓,但不用说重启不是最好的选择,因为它需要时间。 (我正在使用第一个Raspberry)。 那么,有没有办法只重新启动驱动程序,更重要的是,检测它何时失败?

1 个答案:

答案 0 :(得分:0)

经过数小时的研究和试验,我找到了解决自己问题的方法。解决方案实际上非常简单:只需一个后台运行脚本(我的程序就是我的程序),并且每两秒使用一次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

当某些消息匹配"错误libnfc"可以在日志文件中找到。