Назад | Перейти на главную страницу

124 письма отправляются за один раз, а одно должно отправляться каждые пять минут cron, если определенная веб-служба перестает работать

Поэтому я создал простой сценарий для отправки оповещения по электронной почте, когда определенный веб-сервис перестает работать.

Он имеет простой поток:

test = $( curl [address] | grep [a certain string in response] | wc -l )
if [ $test -ne 1 ]; then 
  echo "there has been an error" | mail -s "Error" -t "[my-mail-address]"
fi

а в crontab он настроен на выполнение проверки каждые пять минут:

*/5 * * * * sh /path/to/script/

Пару дней он работал хорошо, но внезапно, минут десять назад, с сервера одновременно были получены почти сотня электронных писем. Это вообще не кажется возможным, поскольку в скрипте даже нет циклов.

Системный журнал:

Jan 26 01:05:01 sv1 CRON[23310]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
Jan 26 01:10:01 sv1 CRON[23815]: (munin) CMD (if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi)
Jan 26 01:12:12 sv1 kernel: [5962667.417178] [ 1106]     0  1106     5914      168      17        0             0 cron
Jan 26 01:12:12 sv1 kernel: [5962667.417250] [27493]     0 27493    14949      224      34        0             0 cron
Jan 26 01:12:12 sv1 kernel: [5962667.417252] [27939]     0 27939    14949      224      34        0             0 cron
Jan 26 01:12:12 sv1 kernel: [5962667.417254] [28436]     0 28436    14948      224      34        0             0 cron
Jan 26 01:12:12 sv1 kernel: [5962667.417256] [28943]     0 28943    14949      224      34        0             0 cron
Jan 26 01:12:12 sv1 kernel: [5962667.417258] [29408]     0 29408    14949      224      34        0             0 cron
...

* это продолжается примерно 800+ строк с аналогичной меткой времени (до 01:12:24). Отметки времени этих 800+ строк совпадают с одновременными отправками писем. Это странно, так как cron должен запускаться каждые 5 минут, отсюда первые 2 строки. Строки, начинающиеся с 01:12:12, выглядят подозрительно.

Обновить:

Просто снова отключил службу и позволил cron и скрипту сделать свою работу. Было отправлено одно письмо.

Поскольку тест очень прост: истина / ложь, я изо всех сил пытаюсь понять, какие особые обстоятельства могут привести к одновременной отправке нескольких писем.

Ты уверен It was working well for a couple of days....? Это означает, что письмо отправлялось каждые 5 минут.

Возможно, письма не могли быть отправлены по какой-либо причине, что привело к возникновению очереди, а когда проблема с подключением была решена, все письма были отправлены. Чтобы найти проблему, необходимо проверить почтовый журнал.

Cron надо отлаживать. Проверьте системный журнал и хронлог:

sudo less /var/log/cron

Некоторая информация о cron должна быть найдена во время отправки 124 писем.

Также проверьте этот вопрос и ответ. Если система слишком загружена, задания cron могут быть суммированы, и тогда следует рассмотреть возможность использования демона.

Проверьте вывод curl [address] | grep [a certain string in response] | wc -l. Прошло ли много времени, прежде чем команда будет выполнена? Почему вы видите все сходства? Первого удара должно хватить. | голова -1 может быть использован.