Запуск скрипта при сбое фонового процесса

Ваш sendmail отправляет сообщение локальному пользователю/почтовому ящику с именем hetzner. Ваш sendmail сообщает, что учетная запись ОС не существует.

Вы можете определить псевдоним для нелокального адреса электронной почты, например,

# forward message to local account/mailbox named "archive" and to non local email
hetzner: archive,john.doe@example.net
# sendmail specific hack to deliver to local account and send a copy
user: \user,jane.doe@example.org

см. "man aliases"

3
12.09.2017, 06:44
1 ответ

Умный подход, представленный Камилом Мациоровски в этом ответе заключается в том, чтобы связать фоновое приложение с его процессом очистки просто я делаю их последовательными командами в одном контексте оболочки. «Простым» способом сделать это будет

nohup sh -c "<Main Process>; <reporting process>" &

, в котором вы асинхронно запускаете nohuped-оболочку, которая запускает основной процесс, а затем безоговорочно запускает процесс отчетности/очистки ()после завершения основного процесса (по какой-либо причине ). Более надежным решением было бы написать короткий скрипт :

.
#!/bin/sh
if <Main Process>
then
    <handling for normal termination>
else
    <handling for abnormal termination>
fi

или

#!/bin/sh
<Main Process>
case "$?" in
    ︙
esac

, а затем запустите скрипт сnohup foo.sh &

Если вас беспокоит только то, что приложение умирает из-за какой-то внутренней ошибки, это наверное лучшее решение. Если есть риск того, что какой-то другой процесс сойдет с ума и отправит куча летальных сигналов, то есть вероятность, что снаряд (, ожидающее завершения работы приложения, )также может сдуться, и, следовательно, не может начать процесс очистки. В этом случае вы можете рассмотреть ответ G -Man , что предполагает наличие процесса мониторинга, который отправляет сигнал 0 в приложение периодически. Если он получает сообщение об ошибке, что процесс больше не существует, затем он инициирует действие очистки.

2
27.01.2020, 21:30

Теги

Похожие вопросы