[systemd-devel] No error even a Required= service does not exist
Andrei Borzenkov
arvidjaar at gmail.com
Fri Nov 29 21:01:11 UTC 2019
25.11.2019 16:19, Mantas Mikulėnas пишет:
> On Mon, Nov 25, 2019 at 3:13 PM Jörg Weinhardt <jw at ib-weinhardt.de> wrote:
>
>> Hi,
>>
>> the behavior of systemd is not quite clear to me:
>> I have a service which requires another service to be started and running,
>> so I use a Requires= dependency to the required service.
>> But if the required service does not exist at all, there is no error
>> message from systemd.
>> e.g.
>>
>> Requires=xyz.service
>>
>> produces no complaint and starts the service even if there is no
>> xyz.service
>> Is this the normal behavior or can I configure systemd to throw an error
>> in this case?
>>
>
> The docs say you can get this behavior if you also have After=xyz.service.
> (Not entirely sure why.)
>
Because systemd dependencies are about jobs, not about units. "B
Requires A" does not mean "unit B should not be active without A being
active". All that it means - "when submitting start job for B also
submit start job for A and fail start job for B if start job for A
failed previously". Without After both start jobs are submitted
concurrently; there is nothing to check when B is being started (as
start job for A is not complete at this point) so there is no reason to
fail start job for B.
Which was the reason to invent BindTo in the first place - as poor man
simulation of what everyone thinks Requires does (while it does not do it).
More information about the systemd-devel
mailing list