На нашем сервере запущен процесс, который время от времени дает сбой. Я хотел бы получать уведомление по электронной почте всякий раз, когда это произойдет. Есть ли простой способ это настроить?
Самый простой способ сделать это, вероятно, будет этот однострочный (вдохновленный ответом SpliFF):
failing_process || mail -s 'Process failed' localpart@example.com
Для более сложного мониторинга вашей системы (а не только одного процесса) взгляните на Nagios, контролировать и все другие известные инструменты мониторинга. Обычно они также поддерживают уведомления не только по электронной почте, но и другими способами.
Для одной системы контролировать наверное, самое подходящее решение.
Иметь задание cron, которое выполняется
ps -A | grep INSERTPROCESSNAME
И видит, есть ли там то, что вы хотите
Затем запускает какой-нибудь скрипт для отправки электронного письма. Вы можете написать отправителя скрипта, как хотите, используя php, python - что угодно с оболочкой SMTP.
В качестве альтернативы вы можете использовать http://www.postageapp.com и отправьте ему запрос curl.
если процесс полностью завершается, вы можете сделать это в bash:
myprocess &
wait
echo "process details" | mail -s "process failed" email@example.com
Думаю есть проверка нагиос на процессы. Это означает, что вам нужно настроить nagios или вы можете сделать это по старинке, каждую минуту запускать cron, чтобы проверять по имени, существует ли процесс еще. Если процесс с таким именем не найден, то у вас есть ответ.
ЕСЛИ запущенный процесс использует порт tcp / udp. Вы можете прослушивать этот порт, и когда это не удается, вы получите электронное письмо. Думаю, здесь тоже можно использовать CRON.
Процессы не прекращаются без какой-либо причины, и всегда есть доказательства того, почему процесс не удался. Есть ли что-нибудь в файлах журнала, почему процесс был убит?
-N