Я проверяю, находится ли сайт в сети или в автономном режиме. Если в автономном режиме, эта задача cron вызывает URL-адрес для отправки мне текстового сообщения.
Вот моя работа cron:
* * * * * /usr/bin/wget "www.mydomain.fr" --timeout 30 -O - 2>/dev/null | grep "a_string_in_the_site" || echo "The site is offline" | wget "urltotextmeamessage.com"
Эта задача проверяет каждые 30 секунд статус сайта и отправляет сообщение, если сайт находится в автономном режиме: OKAY
Проблема в том, что я не хочу сотни сообщений каждые 30 секунд, когда сайт будет отключен.
Можно ли остановить задачу cron после n раз (или сделать "перерыв") до момента, когда сайт снова будет в сети?
Есть идеи?
Я бы не остановил работу cron, потому что вам все равно нужно проверить, снова ли он подключен к сети. Вы можете ограничить msgs сообщением OK/DOWN с помощью этого скрипта:
#!/bin/bash
# /usr/local/sbin/check_webserver
wget -O - -q "checkurl" | if grep -q "checkword"; then
echo "Server OK" > /var/run/check_webserver
else
echo "Server DOWN" > /var/run/check_webserver
fi
diff -q /var/run/check_webserver /var/run/check_webserver.old >/dev/null 2>&1 ||
cat /var/run/check_webserver
# or put some other msg service than cron mail here
cp /var/run/check_webserver /var/run/check_webserver.old
и добавьте это в cron:
* * * * * /usr/local/sbin/check_webserver