Иногда мой сервер выключается через ACPI, и мне удается изящно завершить процесс. Тем не менее, мой процесс (задание A) зависит от другого процесса (задание B) во время его постепенного завершения, поэтому теперь я хочу убедиться, что задание B не остановится, пока задание A не будет остановлено.
Оба процесса являются заданиями Upstart, поэтому я попытался сделать это, добавив это в файл / etc / init задания B:
# Don't stop until job A stops
pre-stop script
while true
do
status A | grep -q "stop/waiting" && exit 0
sleep 1
done
end script
Это не похоже на работу; когда я выключаю свой сервер с помощью ACPI, задание B обычно выключается перед заданием A, так что задание A выдает сообщения об ошибках о том, что задание B не запущено.
Что-то не так с моим сценарием? Есть ли другой подход, который я должен выбрать? Или с Upstart невозможно сделать то, что я хочу?
Смежный вопрос: Как остановить работу до ее зависимости?
Эти параметры можно использовать в задании A:
Остановка перед зависимой службой
stop on stopping B
Запуск после зависимой работы сервис
start on started B