이 스크립트는 주어진 로그 경로에서 특정 패턴(예: "error" 또는 "exception")을 포함하는 가장 최근의 로그 파일을 찾아 그 안의 오류 수를 세는 작업을 수행합니다.

 


#!/bin/bash

source /home/shell/env.sh

# 로그 패스 별로 한 개씩 만든다

LOG_PATH_1="/tomcat/logs

  • 로그 파일이 위치한 경로를 변수로 저장

#체크할 로그를 배열로 입력
LOG_NAMES_1=("tomcat*")

  • 체크할 로그 파일 이름 패턴을 배열에 저장
  • 위 경우, "tomcat"으로 시작하는 모든 로그 파일입니다.

checkline_1=1000

  • 로그 파일의 마지막 1000줄만 검사하도록 설정

check_1="error|exception"

  • "error" 또는 "exception" 문자열을 포함한 로그를 검색할 패턴 정의

error_count=0

  • 오류의 총 개수를 저장할 변수 초기화


for LOG_NAME in "${LOG_NAMES_1[@]}"

  • 배열 LOG_NAMES_1의 각 요소에 대해 루프 시작


do

# 로그 경로에서 특정 문구를 포함한 로그 파일 중 가장 최근 것을 불러오는 스크립트
logfile=$(find $LOG_PATH_!1 -type f -name $LOG_NAME -prints '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}')

  • find 명령어를 사용하여 LOG_PATH_1에서 LOG_NAME 패턴에 맞는 파일들을 찾습니다.
  • -type f는 파일만 검색하도록 설정
  • -name $LOG_NAME는 파일 이름 패턴 지정
  • -prints '%T@ %p\n'는 파일의 수정 시간을 포함한 출력 형식 지정
  • sort -n는 시간 순으로 정렬
  • tail -1은 가장 최신 파일을 선택
  • awk '{print $2}'는 파일 이름만 추출


# errors 수 표현
if [ -s "$logfile" ]; then

  • logfile이 비어 있지 않은지 확인

    errors=$(tail -$checkline_1 "$logfile" | grep -iE "$check_1" | wc -l)

  • tail -$checkline_1 "$logfile"는 로그 파일의 마지막 checkline_1줄을 가져옴
  • grep -iE "$check_1"는 대소문자 구분 없이 패턴에 맞는 줄 검색
  • wc -l는 매칭된 줄의 수를 셉니다.

    error_count=$(expr $error_count + $errors)

  • 현재 로그 파일에서 발견된 오류 수를 error_count에 더함

else
    echo 101
    exit 0
fi

done

echo $error_count


 

더보기

#!/bin/bash

source /home/shell/env.sh

# 로그 패스 별로 한 개씩 만든다

LOG_PATH_1="/tomcat/logs
#체크할 로그를 배열로 입력
LOG_NAMES_1=("tomcat*")
checkline_1=1000
check_1="error|exception"

error_count=0

for LOG_NAME in "${LOG_NAMES_1[@]}"
do

# 로그 경로에서 특정 문구를 포함한 로그 파일 중 가장 최근 것을 불러오는 스크립트
logfile=$(find $LOG_PATH_!1 -type f -name $LOG_NAME -prints '%T@ %p\n' | sort -n | tail -1 | awk '{print $2}')

# errors 수 표현
if [ -s "$logfile" ]; then
    errors=$(tail -$checkline_1 "$logfile" | grep -iE "$check_1" | wc -l)
    error_count=$(expr $error_count + $errors)
else
    echo 101
    exit 0
fi

done

echo $error_count

 

+ Recent posts