LINUXSHELL抓取錯誤日誌指令碼

2022-09-23 17:27:12 字數 1139 閱讀 2230

任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。

本人對shell完全是初學,磕磕碰碰寫了個指令碼。主要邏輯是判斷error的日誌級別的那一行開始記錄,直到碰到下乙個info或者debug的日誌級別行。

#!/bin/bash

isinerrorblock=false

strarray=()

count=1

while read line

do #echo "line $count:"

arrayidx=$count%10

strarray[$count]="$line"

idx=$(expr match "$" ".*error")

if [ $idx -le 0 ];

then

idx=$(expr match "$" ".*exception*")

fiidx2=$(expr match "$" ".*debug")

idx3=$(expr match "$" ".*info")

if [ $idx -gt 0 ] ;

then

if ! $isinerrorblock;

then

echo 'print out previous lines'

isinerrorblock=true

echo $

fi else

if [ $idx2 -gt 0 ] || [ $idx3 -gt 0 ] ;

then

isinerrorblock=false

else

if $isinerrorblock;

then

echo $

fifi fi

count=$[ $count+1 ]

done

#echo "finish\n"

exit 0

基本達到了要求,對於每個目錄 cat *log | sh find_error.sh 能夠將整個堆疊單獨輸出到乙個檔案。但是效率很慢,不知道如何才能提高shell的執行效率。

LINUX SHELL 抓取錯誤日誌指令碼

任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。本人對shell完全是初學,磕磕碰碰...

LINUXSHELL抓取錯誤日誌指令碼

任何程式執行起來免不了產生很多日誌,其中錯誤日誌需要最為關心的。在某些時候會將錯誤日誌和正常日誌分開,但我們的系統卻沒有這麼做。更麻煩的是,每個小時儲存乙個日誌檔案,所以每次為了查詢當天是否有錯誤資訊需要開啟n個檔案,而且不能用grep因為需要把整個堆疊抓取下來。本人對shell完全是初學,磕磕碰碰...

Linux shell指令碼錯誤檢測

除了 echo 命令,還可以使用如下兩種方法。1.shell跟蹤選項 set命令執行之後的每一條命令以及加在命令列中的任何引數 包括變數和變數的值 都會顯示出來。是跟蹤輸出的標誌,在子shell中執行的shell命令會加兩個 例 bin sh set x echo n can you write d...