2017-02-26 72 views
0

因此,這個腳本運行了幾個小時,但突然停止了它的工作。根據最高,它仍在運行,但它似乎不再做任何事情。幾小時後,Bash腳本似乎停止工作

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

瘋狂的猜測,但也許你的管道緩衝區之一填滿或在輸入或輸出上被阻塞? – ffledgling

+0

/var/log/messages仍在增長? – Shiping

+0

這可能有助於:[如何調試bash腳本?](http://unix.stackexchange.com/q/155551/74329) – Cyrus

回答

5

幾個小時後,日誌系統關閉/var/log/messages,將其重命名,並打開一個新文件使用相同的名稱。然而,tail -f繼續觀看不再寫入的原始文件。

改爲使用tail -F,以確保您繼續觀看名爲/var/log/messages的文件,而不管實際上是哪個文件。

+0

我會試試這個,如果事實證明它可以正常工作,請將其標記爲答案。謝謝! –