LINUX.ORG.RU
ФорумTalks

Немного Марсианской Логики

 


3

2

Усаживайтесь поудобнее детишки, сейчас дядя Кирк расскажет вам сказку. Как вы думаете, что делает опция Requires= в юнит-файле systemd? Думаете она определяет жесткую зависимость одного сервиса от другого, загружая их в правильном порядке? О нет, детишки, вы жестоко ошибаетесь:

Note that requirement dependencies do not influence the order in which services are started or stopped.

Именно так, для определения порядка нужно использовать After=. И вот я сижу и пытаюсь представить, какой извращенный use-case пришел этим людям в их гойловы и кто вообще выпустил разработчиков из зоопарка.

★☆

Последнее исправление: kirk_johnson (всего исправлений: 1)
Ответ на: комментарий от ioway

И если что рапортует «DB failure» ага! И да клиент _всегда_ стартует после сервиса.

Пока читал ваше обсуждение, придумал где пофиг на порядок запуска, но логичен будет Require. Jabber-сервер и Jabber-транспорты, с одной стороны транспорты требуют сервер(они без него не имеют смысла), а с другой им абсолютно параллельно будут они запущены до или после сервера.

Loki13 ★★★★★
()
Ответ на: комментарий от leave

Да, зависимости - это боль. Раньше никто об этом не думал, а теперь внезапно выяснилось, что неплохо бы не только запускать их в правильном порядке, но и получать извещение, о том что демон проинициализировался (а не просто бинарь стартовал) и только после этого стартовать то, что от него зависит.

sergej ★★★★★
()
Ответ на: комментарий от sergej

Поэтому подобные костыли ещё долго будут рулить пока везде всё починят :S

sergej ★★★★★
()
Ответ на: комментарий от sergej

Да, зависимости - это боль. Раньше никто об этом не думал, а теперь внезапно выяснилось, что неплохо бы не только запускать их в правильном порядке, но и получать извещение, о том что демон проинициализировался (а не просто бинарь стартовал) и только после этого стартовать то, что от него зависит.

Ну так а в чем проблема запустить его клиент и спросить? И сделать это прямо в сервисе?

kirk_johnson ★☆
() автор топика
Ответ на: комментарий от kirk_johnson

Restart=always фактически это и делает.

  • Запускается клиент,
  • не может присоединиться потому, что сокет пока не открыт,
  • фейлится,
  • restart

и т.д.

sergej ★★★★★
()

Хотя ладно, я только что опять наткнулся на то, что если systemd не может примонтировать из /etc/fstab оно вообще фейлит всю загрузку :D

kirk_johnson ★☆
() автор топика
Ответ на: комментарий от intelfx

Проходи мимо, не задерживайся.

Я стесняюсь спросить ты у нас уже и регулировщиком себя считаешь?

quest ★★★★
()
Ответ на: комментарий от sergej

Да-да. Просто во всех остальных системах нет этого безумия, и я слегка забыл, что к чему %)

kirk_johnson ★☆
() автор топика
Ответ на: комментарий от ioway

After - например приблуда X стартует после запуска постгрес, поскольку юзает его. Значит у этой приблуды в After=postgresql

Required - эта приблуда не работает без постгрес. Значит если кто-то останавливает постгрес (в процессе работы, а не старта), сначала останавливаются все кто зависит от постгреса, потом только выполняется останов постгрес.

ну и зачем было это разделять?

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

ну и зачем было это разделять?

зачем

Это ведь системд, нет смысла задавать вопросы начинающиеся со слова «зачем».

ya-betmen ★★★★★
()
Ответ на: комментарий от dikiy

Почитай тред, здесь ответили на этот вопрос несколько раз и с нескольких позиций.

intelfx ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.