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

関連情報