![bash를 통해 서비스 종료가 반복적으로 이메일 알림을 보내는 것을 방지하는 방법](https://linux55.com/image/69695/bash%EB%A5%BC%20%ED%86%B5%ED%95%B4%20%EC%84%9C%EB%B9%84%EC%8A%A4%20%EC%A2%85%EB%A3%8C%EA%B0%80%20%EB%B0%98%EB%B3%B5%EC%A0%81%EC%9C%BC%EB%A1%9C%20%EC%9D%B4%EB%A9%94%EC%9D%BC%20%EC%95%8C%EB%A6%BC%EC%9D%84%20%EB%B3%B4%EB%82%B4%EB%8A%94%20%EA%B2%83%EC%9D%84%20%EB%B0%A9%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
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