2017-02-26 4 views
0

So läuft dieses Skript für ein paar Stunden, aber plötzlich hört auf, seine Arbeit zu erledigen. Nach oben läuft es immer noch, aber es scheint nichts mehr zu tun.Bash-Skript scheint nach ein paar Stunden zu funktionieren

WANSTAT=1 
LTESTAT=1 

tail -f /var/log/messages | grep --line-buffered mwan3 | while read -r INPUT ; do 
    if [[ "$INPUT" == *"notice mwan3track[]: Interface wan (eth1) is offline" ]]; then 
    WANSTAT=0 
    echo "WAN offline" 
    elif [[ "$INPUT" == *"notice mwan3track[]: Interface lte (3g-lte) is offline" ]]; then 
    LTESTAT=0 
    echo "LTE offline" 
    elif [[ "$INPUT" == *"ifup interface wan (eth1)" ]]; then 
    WANSTAT=1 
    elif [[ "$INPUT" == *"ifup interface lte (3g-lte)" ]]; then 
     LTESTAT=1 
    fi 
    if [ $WANSTAT -eq 0 ] && [ $LTESTAT -eq 0 ]; then 
     echo "All red\n" 
    elif [ $WANSTAT -eq 0 ]; then 
     echo "WAN red, LTE green\n" 
    elif [ $LTESTAT -eq 0 ]; then 
     echo "LTE red, WAN green\n" 
    else 
     echo "All green\n" 
    fi 

done 
+0

Wild rate, aber vielleicht ist einer Ihrer Pipe-Puffer voll oder ist entweder an Eingang oder Ausgang blockiert? – ffledgling

+0

/var/log/messages wuchs noch? – Shiping

+0

Dies könnte helfen: [? Wie ein Bash-Skript zu debuggen] (http://unix.stackexchange.com/q/155551/74329) – Cyrus

Antwort

5

Nach ein paar Stunden, die Logging-System schließt /var/log/messages, benennt sie und öffnet eine neue Datei mit dem gleichen Namen. tail -f, jedoch weiterhin die Original Datei, die nicht mehr zu geschrieben ist.

Verwenden Sie stattdessen tail -F, um sicherzustellen, dass Sie weiterhin die Datei mit dem Namen /var/log/messages überwachen, unabhängig davon, welche Datei tatsächlich vorhanden ist.

+0

Ich werde das versuchen und es als die Antwort markieren, wenn es sich herausstellt, um zu arbeiten. Vielen Dank! –

Verwandte Themen