1

У меня есть процесс, который запускается Сron, как это:

timeout 1h /app/longprocess.sh

Теперь я хочу получать уведомления по электронной почте, если что-то пойдет не так. Вообразите это:

notifyme maintainer@example.org timeout 1h /app/longprocess.sh

где notifyme , это предполагаемая команда , которая будет отправить по электронной почте maintainer@example.org с выходом команды в случае выходы команд с ненулевым статусом. Есть ли что-то подобное?

3 ответа3

2
sometask||echo Something Went Wrong! | mail -s E-MailSubject user@example.com

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

Точно так же вы можете сделать:

sometask&&echo Something Went Right! | mail -s E-MailSubject user@example.com

который только управлял бы тем, что случилось справа, если бы все было успешно. (Под "успешным" я конкретно имею в виду, что "ноль" - это код возврата команды, указанной слева.)

Редактирование: я первоначально написал это поздно вечером, и, к сожалению, обновление было необходимо для точности, поэтому комментарии указали на некоторые аспекты ответа. (Спасибо MariusMatutiae и благодарность!) Я решил, что в долгосрочной перспективе исправить ответ лучше, чем оставить его в состоянии, которое может вызвать путаницу.

2

cron уже отправляет письма, если установлен совместимый /usr/sbin/sendmail (например, msmtp, ssmtp, Postfix, OpenSMTPD…). См. Также: Что такое сообщение "У вас есть новая почта" в Linux/UNIX?

chronic из moreutils может справиться "только на успех" часть:

chronic timeout 1h /app/longprocess.sh
-2

Вы всегда можете использовать следующий метод, добавив:

MAILTO=xyz@example.com

в вашем кроне и вам сообщат. Я пробовал это, и это работало для меня все время.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .