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

Andrei Borzenkov arvidjaar at gmail.com
Tue Oct 17 16:58:02 UTC 2017


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.


More information about the systemd-devel mailing list