
有人能給我一些啟發,指出我正確的方向嗎?
我想在 bash 中建立一個腳本,用於在 Tomcat 應用程式啟動期間檢查日誌中的異常。該腳本應該能夠透過 . 動態檢測新文件的創建inotify
。
該腳本應不斷檢查日誌目錄中日誌檔案中的新行,並將包含單字Exception:
或ERROR
的行寫入/var/log/errorcheckernotifier.txt
。
當腳本偵測到這一行時,INFO: Server startup in
它應該寫入TOMCAT IS STARTED
啟動/var/log/errorcheckernotifier.txt
期間偵測到的異常數量。
該腳本不應覆蓋errorcheckernotifier.txt
.改為附加它。
我怎麼能保持這個腳本運行並檢測進一步的啟動、計數異常等。
答案1
如果有幫助的話,我可以給你我的 tomcat 初始化腳本的「啟動」部分。
開始) echo -n“正在啟動$FOO_BASE_JM” ## 使用 startproc(8) 啟動守護程式。如果失敗 ## 傳回值由startproc 適當設定。 如果 ps -efwwwwwwwwwwwwwww | java | grep | grep -q "$FOO_BASE_JM";然後 echo "進程 $FOO_BASE_JM 已經存在" rc_失敗 1 別的 LOGLINES=$(cat /opt/$FOO_BASE_JM/logs/catalina.out | wc -l) 匯出CATALINA_OPTS ########/sbin/startproc $FOO_BIN if [ "$(id -un)" = "tomcat" ];然後 $FOO_BIN 開始 || rc_失敗 1 別的 /bin/su tomcat $FOO_BIN 開始 || rc_失敗 1 菲 echo -n“等待進程出現。” 重量=0 process_seen=true 儘管 ! PS-efwwwwwwwwwwwwwww | java | grep | grep -q "$FOO_BASE_JM";做 睡覺2 迴聲-n。 重量=$(($重量+1)) 如果[“$wt”-gt 30];然後 迴音 echo "逾時:看不到進程。您應該檢查日誌。" rc_失敗 1 process_seen=假 休息 菲 完畢 如果[“x$process_seen”=“xtrue”];然後 迴音 echo -n“等待啟動。” 重量=0 儘管 !尾 +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "訊息:伺服器啟動";做 睡覺2 迴聲-n。 重量=$(($重量+1)) 如果[“$wt”-gt 30];然後 迴音 echo "逾時:在日誌中找不到伺服器啟動成功的跡象,請檢查。" rc_失敗 1 休息 菲 完畢 尾 +$LOGLINES /opt/$FOO_BASE_JM/logs/catalina.out | grep -q "INFO: 伺服器啟動" && tail +$LOGLINES /opt/$FO O_BASE_JM/logs/catalina.out | O_BASE_JM/logs/catalina.out grep“資訊:伺服器啟動” 菲 fi # 如果沒有進程存在 # 記住狀態並保持詳細 rc_status -v ;;
作為替代方案,我可以建議使用像Nagios 這樣的監控工具,將其日誌監控插件之一指向catalina.out 檔案(或您登入的任何位置),並蒐索新的錯誤字串或您感興趣的任何內容。在我們的 Oracle 資料庫上完美運作。