#!/bin/bash CPU_LIMIT=14 start_lora() { bash /usr/local/bin/lora-nfuse-start.clv STATUSNFUSESTART=$? echo "status nfuse start $STATUSNFUSESTART" if [ $STATUSNFUSESTART -eq 1 ]; then bash /usr/local/bin/lora-nfuse-start.clv 1 fi } LORA_CPU=$(ps -eo pcpu,fname | grep lora_pkt | sed 's+ lora_pkt++') if [ "$LORA_CPU" == "" ]; then echo "No CPU usage: $LORA_CPU from lora_pkt process found" start_lora exit fi CPU_USAGE=$(echo $LORA_CPU \* 10 | bc -l | sed 's+\.0++') # if DEBUG print some values if [ "$1" == "-d" ]; then echo USAGE: ${CPU_USAGE}% CPU: $LORA_CPU fi if [ "$CPU_USAGE" == "" ]; then echo "No lora_pkt_fwd process." start_lora exit fi # BUG? top says 100% but ps says 37-40 CPU usage # BUG? top says 100% but ps says 15 CPU usage # Normal cpu usage is 3% if [ $CPU_USAGE -gt $CPU_LIMIT ]; then echo More than $CPU_LIMIT, pcpu: $CPU_USAGE echo "restarting lora CPU: $CPU_USAGE" | mail -s "LoRa HANG!" `whoami` start_lora exit fi cat /var/log/lora.log | tail -9 | grep -q "CRC_OK: 0\.00.*CRC_FAIL: 0\.00.*NO_CRC: 0\.00" if [ $? -eq 0 ]; then echo Concentrator hang. No CRC reporting. echo "restarting lora_packet_fwd" | mail -s "Zero LoRa packets. Probably hang." `whoami` start_lora exit fi