[systemd-devel] Why do passive target units have to exist?

林自均 johnlinp at gmail.com
Thu Oct 19 09:46:24 UTC 2017


Hi Andrei,

Thank you for your reply!
Just to confirm: there are about 10 passive system targets in
systemd.special(5):

- getty-pre.target
- cryptsetup-pre.target
- local-fs-pre.target
- network.target
- network-pre.target
- nss-lookup.target
- nss-user-lookup.target
- remote-fs-pre.target
- rpcbind.target
- time-sync.target

Are they all related to early days initscripts?

Thanks.

John

Andrei Borzenkov <arvidjaar at gmail.com> 於 2017年10月18日 週三 00:58 寫道:

> 16.10.2017 18:15, 林自均 пишет:
> > Hi folks,
> >
> > I am reading systemd documents, and I find passive target units a little
> > bit confusing.
> >
> > Take "network.target" for example:
> >
> > "systemd-networkd.service" specifies "Wants=network.target" and
> > "Before=network.target". That effectively makes starting
> > "systemd-networkd.service" brings up both "systemd-networkd.service" and
> > "network.target", and make sure that "network.target" is active after
> > "systemd-networkd.service" being active. It also implies that the
> shutdown
> > order is correct: "network.target" will be stopped before
> > "systemd-networkd.service".  Everything is fine.
> >
> > What if we use an active target unit to achieve all this? Can we specify
> a
> > "WantedBy=network.target" in "systemd-network.target"? So that we can
> > enable "systemd-network.service" (which makes a symbolic link in the
> > "network.target.wants" directory) and start "network.target" to pull in
> > "systemd-networkd.service". That also makes sure "network.target" is
> active
> > after "systemd-networkd.service" because of the target unit default
> > dependencies. And shutdown order will be correct too.
> >
> > The only difference I can tell is the units to start. With a passive
> > "network.target", we start "systemd-networkd.service". With an active
> > "network.target", we start "network.target".
> >
> > Is there any benefits of passive target units over active target units?
> >
>
> I think it's historical artefact from the very early days when systemd
> had to rely on initscripts. initscript implementing networking did
> provide $network a.k.a network.target, but of course did not hook itself
> into native systemd units. As long as you are sure to use native units
> only there is no practical difference.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/systemd-devel/attachments/20171019/3bb5f0cc/attachment.html>


More information about the systemd-devel mailing list