[systemd-devel] Q: Wants and WantedBy links in generated units and circular dependencies

Andrei Borzenkov arvidjaar at gmail.com
Thu May 23 10:41:26 UTC 2019

On Thu, May 23, 2019 at 11:56 AM Ulrich Windl
<Ulrich.Windl at rz.uni-regensburg.de> wrote:
> Hi!
> After seeing that systemd generators are run as the very first step in
> systemd's life (deduced from the timestamps), I quit the idea of using them,
> and started to use another sort of generator:
> I have a generator target, that creates another target and a few service
> targets.
> The interesting point is circular dependencies for the generated units, and
> I'd like to ask if the following would work:
> I need to enable a generated target to get ist wants-links installed; likewise
> the generated service units need to be enabled to get the wants link from the
> target to the service.
> As my generator created the service units first, then the target unit which
> "Wants" the service units.
> The idea is that starting the soingle target unit will start all depending
> service units.
> So far that is without enabling. I wonder whether I can enable the service
> units that are "WantedBy" the target unit _before_ the target unit was actually
> generated.

If target unit Wants your service units, there is nothing to enable.

> If that doesn't work, I'll need a two-pass approach.
> For history, one of the odd things in systemd v228 is this:
>  # systemctl status iotwatch.target
> ● iotwatch.target
>    Loaded: not-found (Reason: No such file or directory)
>    Active: inactive (dead)
> # systemctl enable iotwatch.target   ### thios command must do something
> magic!

It also implicitly does "systemctl daemon-reload". It should not
really be necessary in this case (systemd should attempt to load
missing definition) but with so old version who knows.

> # systemctl status iotwatch.target
> ● iotwatch.target - iotwatch I/O performance monitor
>    Loaded: loaded (/run/systemd/system/iotwatch.target; enabled; vendor
> preset: disabled)
>    Active: inactive (dead)
>      Docs: man:iotwatch at .service(8)
>            man:iotwatch-generator(8)
> So it seems I must enable units just to be able to query whether they are
> enabled...???

systemctl is-enabled

More information about the systemd-devel mailing list