Кажется, что принятый способ указать зависимость службы A
от службы B
в upstart - это работать в обратном направлении зависимости: предоставить службу B
a start on starting A
строфа.
Я хотел бы избежать этого по двум причинам:
Кажется странным изменять конфигурационный файл B
, когда появляется новая служба, зависящая от него: новый сервис должен объявить свои зависимости; B
не должен был знать о них.
Я хотел бы автоматизировать построение сервисных иерархий, топологически исходя из уже построенного графа зависимостей, и было бы нелегко преобразовывать его в обратный граф зависимостей только для этого.
[тысяча сто тридцать два] Я думал, что смогу просто запустить зависимые службы в разделе скрипта pre-start
в файле conf, но похоже, что это не сработает, если у меня также есть setuid
и setgid
stanzas --- с тех пор сценарий pre-start
будет запускаться с этим пользователем / группой.
Есть ли идиоматический способ сделать это (то есть объявить зависимости, а не обратные зависимости)? Этот ответ - это , а не , что я хочу, так как я не хочу также писать сценарий инициализации без запуска.
(Полагаю, start on started B
для A
сработает в этом случае, но я не уверен, сработает ли это, если бы A
имел несколько зависимостей: сработало бы start on started B and started C
? Если я начну B
и затем C
, получит ли A
оба события одновременно? Также это неправильно понимает логику даже в случае с одной зависимостью: start on started B
говорит, что запуск B
является достаточным условие запуска A
. Но я хочу сказать, что запуск B
является необходимым условием для запуска A
, и условием, что действие запуска A
должно быть выполнено .)