hang 이란? 

  • 프로그램이나 시스템이 중단된 상태
  • 이 상태에서는 프로그램이 입력에 응답하지 않거나 작업을 계속하지 못함.

#!/bin/bash

source /home/shell/env.sh

# hang=3

pattern="log_increase*"

  • 로그 파일의 패턴을 설정

LOG_FILES=($MY_HOME_LOG/$pattern)

  • 지정된 패턴에 맞는 로그 파일을 환경 변수 MY_HOME_LOG 경로에서 찾아 배열 LOG_FILES에 저장


result=0
for LOG_FILE in "${LOG_FILES[@]}"
do

# 마지막 1000줄 가져오기
GET_LINES=$(tail -n 1000 $LOG_FILE)

  • tail -n 1000 명령어로 로그 파일의 마지막 1000줄을 가져와 GET_LINE 변수에 저장


GET_LAST_NUM=$(echo "$GET_LINES" | tail -n 1 | grep -o '[0-9\+')

  • echo "$GET_LINES"로 마지막 1000줄을 출력하고, tail -n 1으로 마지막 줄을 가져온 후, grep -o '[0-9\+'로 숫자만 추출하여 GET_LAST_NUM 변수에 저장

GET_STUCK_NUM=$(echo "$GET_LINES" | grep $GET_LAST_NUM | wc -l)

  • echo "$GET_LINES"로 마지막 1000줄을 출력하고, grep $GET_LAST_NUM으로 GET_LAST_NUM과 일치하는 줄을 찾아 wc -l로 줄 수를 계산하여 GET_STUCK_NUM 변수에 저장


# 로그 파일이 변화 없는 시간이 HANGTIME을 초과하면 안 됨.
if ( (GET_STUCK_NUM > HANG_TIME) ); then
    result=1
fi

done

echo $result

 


더보기

#!/bin/bash

source /home/shell/env.sh

# hang=3

pattern="log_increase*"
LOG_FILES=($MY_HOEM_LOG/$pattern)

result=0
for LOG_FILE in "${LOG_FILES[@]}"
do

# 마지막 1000줄 가져오기
GET_LINES=$(tail -n 1000 $LOG_FILE)

GET_LAST_NUM=$(echo "$GET_LINES" | tail -n 1 | grep -o '[0-9\+')
GET_STUCK_NUM=$(echo "$GET_LINES" | grep $GET_LAST_NUM | wc -l)

# 로그 파일이 변화 없는 시간이 HANGTIME을 초과하면 안 됨.
if ( (GET_STUCK_NUM > HANG_TIME) ); then
    result=1
fi

done

echo $result

 

+ Recent posts