Как получить уведомление, когда скрипт не запускается - PullRequest
1 голос
/ 12 октября 2010

У меня есть скрипт bash, который запускается на компьютере (называемом lazyguy), который обычно выключен. Каждую ночь ленивый просыпается в известное время, запрограммированное в BIOS, выполняет кучу обработки и вставляет данные в свою базу данных Postgres. Затем идет в сон (база данных и все).

Как получить уведомление, когда скрипт НЕ запускается? В идеале я хотел бы получить уведомление по электронной почте, если в базу данных ничего не вставлено или если скрипт завершился с ненулевым возвращаемым значением. Я определенно должен проверить оба условия на тот случай, если ленивый проигнорирует свою тревогу и заснет ... снова.

У меня есть другая машина (Taskmaster), которая всегда работает, но имеет ограниченные ресурсы. Некоторые мысли:

  • Пусть ленивый отправит какое-то сообщение мастеру задач, чтобы указать, что он закончил свою работу по дому (может быть, с добавленным количеством строк). Затем мастер проверяет свой отчет каждый день в определенное время. Если его там нет, напишите мне, и я пошлю болванов, чтобы избить ленивого.

  • Попросите мастера по вызову вызвать ленивый напрямую с помощью пакета WakeOnLan, подождать две минуты, запустить скрипт через ssh и проверить количество строк в базе данных за день. Если что-то пойдет не так, напишите мне.

Какой подход лучше? Есть ли более простой способ сделать это? Какие технологии вы бы использовали? Я думаю, может быть, какая-то смесь crontab, mailx, logger и, возможно, rsyslog.

Ответы [ 4 ]

1 голос
/ 12 октября 2010

Я удивлен, что никто еще не упомянул об этом: когда скрипт, запущенный из cron, аварийно завершает работу, он отправляет электронное письмо на почтовый адрес, указанный в / etc / crontab.Включает весь вывод скрипта.

1 голос
/ 12 октября 2010

Я бы предпочел ваш первый, более децентрализованный метод (например, lazyguy будет выполнять некоторые запросы на простом HTTP-сервере, работающем на Taskmaster после успешного выполнения задания, сервер будет обновлять временную метку, хранящуюся на диске, которая будет проверяться скриптом cron), но у второго есть преимущество - когда вы решите изменить расписание для лентяев (и, таким образом, расписание проверок), вы сделаете это из одного места - мастера задач.

0 голосов
/ 12 октября 2010

Вы можете отправить себе электронное письмо через командную строку с помощью команды mail.Используйте эту ссылку http://www.amirwatad.com/blog/archives/2009/03/21/send-email-from-the-command-line-using-gmail-account/, чтобы настроить ее.Вы можете установить для этого специальный аккаунт.

0 голосов
/ 12 октября 2010

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

          • rm -rf /tmp/lazyguy.log; /lazyguy.sh> /tmp/lazyguy.log

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

чтобы проверить, если ленивый, вы можете сделать что-то вроде

checkamdump(){<br/> while ps ax | grep -v grep | grep "lazyguy.sh" > /dev/null<br/> do<br/> sleep $SLEEPTIMEOUT<br/> done<br/> }<br/>

Кроме того, вы можете проверить lazyguy.log, добавив это в ваш скрипт
<br/> FILESIZE=<code>stat -c %s /tmp/lazyguy.log
если [$ FILESIZE -gt 0]
затем
mailx -s "Lazyguy is really lazy" alerts@main.com < /tmp/lazyguy.log
фи
Надеюсь, это поможет, добавьте свой комментарий, если у вас есть какие-либо вопросы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...