我需要觀察文件(現有或新創建)更改的目錄並計算日誌中出現的次數ERROR
。當它看到一條新線OKAY
時,它將錯誤計數器重置爲0(零)。一旦它再次在新行中找到ERROR
,該腳本會不斷重複相同的過程。不斷監控目錄/文件以進行錯誤報告
#!/bin/bash
#
log="/tmp/running.txt"
ref=${log}.ref
TERR=${TERR:-0}
if [ -e $log ]; then
if [ ! -e $ref ] || find $log -newer $ref | grep . > /dev/null
then
touch -r $log $ref
gStr="tail -1 $log | grep -m1 -Fe 'ERROR'"
echo -e "[$(date)] #-------------- CHANGE(s) DETECTED --------------#"
[[ -n $(eval $gStr) ]] \
&& { echo " ---- $(eval $gStr) --- "; export TERR=$((TERR+1)); } \
|| { echo -e " ***** It's OKAY now *****"; export TERR=0; }
echo "Error counter: $TERR"
echo -e "[$(date)] #-------------- End of Check ---------------#\n"
fi
fi
我開始用一個單一的文件(檢查,而不是在該目錄多個文件),這就是我來了這麼遠,這是在新的追趕ERROR
和OKAY
方面的工作好嗎行,但不知道在跟蹤OKAY
之前跟蹤錯誤報告的數量。我試着沒有任何快樂地運行這個scrit (. ./chkError.sh)
。 TERR=$((TERR+1))
似乎沒有工作。任何想法我該怎麼做?
另一個相關的問題是,我將此腳本作爲cron-job運行,即每分鐘運行一次,這可能是不夠的。我還能做些什麼使它在後臺運行?乾杯!!
檢查inotify和inotifytools。 – wildplasser
@wildplasser:已經檢查出這種可能性,但問題是'inotify | inotifytools'不是標準安裝的一部分,我無法確定那些工具是否安裝在該特定節點上。所以得到了可用的東西。乾杯!! – MacUsers