bash를 통해 서비스 종료가 반복적으로 이메일 알림을 보내는 것을 방지하는 방법

bash를 통해 서비스 종료가 반복적으로 이메일 알림을 보내는 것을 방지하는 방법

10분마다 실행되도록 예약된 간단한 bash 스크립트가 있습니다. 이 스크립트는 모든 서비스의 PID를 확인하고 발견되지 않으면 이메일 경고를 보냅니다.

#!/bin/bash
if pgrep "mysql" > /dev/null
then
    echo "MYSQL Running"
else
    echo "ALERT Stopped"
    # Sends Email Alert blah blah
fi

문제는 필요한 서비스가 어떤 이유로 영구적으로 다운되면 10분마다 이메일을 계속해서 보낸다는 것입니다. 서비스가 다운되고 이메일이 한 번 전송되면 서비스가 다시 시작될 때까지 이메일이 전송되지 않도록 확인을 어떻게 설정합니까? 이후 서비스가 다시 종료되면 새 이메일을 보내야 합니다.

답변1

다음과 같이 시도해 보세요.

#!/bin/bash
if pgrep "mysql" > /dev/null
then
    echo "MYSQL Running"
    rm -f /var/run/.mysql_mail_sent
else
    echo "ALERT Stopped"
    if [ ! -f /var/run/.mysql_mail_sent ]; then
        // send your mail here
        date > /var/run/.mysql_mail_sent
    fi
fi

관련 정보