특정 로그 발생 시 프로세스 종료하는 스크립트

신규 프로그램 셋업이나 프로그램 유지보수 간 스크립트 사용 가능할 것으로 보이는데,

로그에서 error 메시지 발생하였을 때 자동으로 해당 프로세스 종료하는 쉘 스크립트입니다.

 

아래는 문제 발생했을 때 바로 프로세스 강제 종료(kill -9)하는 스크립트입니다.

# 문제 발생시 해당 프로그램 곧바로 kill하는 스크립트입니다.
#로그 발생 시 프로세스 종료하는 스크립트가 아니고 단순히 문제 발생한 프로세스를 종료하는 스크립트입니다.

#!/bin/sh

pgm="test"
ps -ef|grep $pgm|grep -v grep|awk '{print "kill -9 "$2}'|sh -x

 

위 스크립트를 활용해서 특정 로그 발생 시 프로세스를 강제 종료하는 스크립트는 아래와 같습니다.

(저는 특정로그를 error 로 지정 하였고 프로세스 명은 test 로 지정하였습니다.)

#프로그램에 error 로그 발생할 경우 해당 프로그램 강제종료

#!/bin/sh
PGM="test"
tail -f /home/hkkim/program.log | while read line; do
        if [[ $line =~ 'error' ]];then
                    ps -ef|grep $PGM|grep -v grep|awk '{print "kill -9 "$2}'|sh -x
            fi
    done;

ps -ef|grep $PGM|grep -v grep|awk '{print "kill -9 "$2}'|sh -x

이 부분만 수정하면 error 로그 발생하였을 때 원하는대로 조치가 가능합니다.

 

띄어쓰기에 주의하시길 바랍니다.

 

감사합니다.