[systemd-devel] Question on Before=
Steve Dickson
SteveD at RedHat.com
Sat Feb 2 21:36:45 UTC 2019
On 2/2/19 4:03 PM, Tomasz Torcz wrote:
> 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.
It turns out I had a bug in my spec file logic which should
have enabled the service...
Thanks for the help!
steved.
>
>
More information about the systemd-devel
mailing list