[systemd-devel] Question on Before=
Tomasz Torcz
tomek at pipebreaker.pl
Sat Feb 2 21:03:08 UTC 2019
On Sat, Feb 02, 2019 at 03:03:22PM -0500, Steve Dickson wrote:
>
>
> On 2/2/19 2:48 PM, Tomasz Torcz wrote:
> > On Sat, Feb 02, 2019 at 02:42:15PM -0500, Steve Dickson wrote:
> >> Hello,
> >>
> >> In a.service I have
> >>
> >> [Unit]
> >> Before=b.service
> >>
> >> [Install]
> >> RequiredBy=b.service
> >>
> >> when I systemd start b.service (which happens to fail)
> >> but... a.service is not being run.
> >>
> >> So I guess my question is what do I have to do
> >> to ensure a.service is *always* run before b.service?
> >
> > Have you enabled a.service?
> >
> No... I did not think I had to... I figured
> when b.service was started, a.service would be
> run regardless of being enabled or disabled.
>
> Is that not the case?
Not really. It would work, if you had in b.service line like
Requires=a.service (*).
But apparently you do not want to modify b.service, so you
put RequiredBy= in a.service's [Install] section. Directives
in [Install] section requires "systemctl enable" to have symlinks
created and to have effect. After enable, it will work identical to (*).
Nb. most services have RequireBy=multi-user.target (or WantedBy=). For
such services, enabling mean they will start at boot (beacuse
multi-user.target is part of boot process). But there is not
requirement for services to be Wanted/Required by not boot-related
services and target.
Thus, you often find in tutorials assertion that
"systemctl enable" equals "start during boot". This is not true.
--
Tomasz Torcz "Funeral in the morning, IDE hacking
xmpp: zdzichubg at chrome.pl in the afternoon and evening." - Alan Cox
More information about the systemd-devel
mailing list