LINUX.ORG.RU

Циклы в systemd

 


0

0

А как так получается что если в зависимостях юнитов образуется цикл, то systemd ругается в консоль и отключает один из юнитов чтобы разорвать цикл.

В мануале пишут что Requires и Wants не определяют порядок выполнения юнитов, и если не задано Before и After, юниты будут выполнены одновременно.


[Unit]
Description=Test unit
Before=systemd-remount-fs.service

[Service]
Type=oneshot
ExecStart=/bin/true

[Install]
WantedBy=multi-user.target

Такой юнит выдавал ошибку, сейчас воспроизвести не могу.

crowbar
() автор топика

Циклы могут образовываться только из зависимостей порядка.

В данном случае ты сортируешь свой юнит перед systemd-remount-fs.service, который, в свою очередь, отсортирован перед sysinit.target. Но при этом все юниты в systemd неявно получают зависимость After=basic.target (который, в свою очередь, отсортирован после sysinit.target). Получаем противоречие.

Отключить неявные зависимости можно с помощью директивы DefaultDependencies=no в секции [Unit]. Но это директива вида «включить режим прострела ноги» — тебе придётся аккуратно расставлять всё вручную.

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