Is there a command which would demonstrate where this link is derived from?
O mais próximo que você pode fazer é systemctl show -p Requires,Wants,Requisite,BindsTo,PartOf,Before,After cvol.service
, que mostrará as listas de dependência resultantes (efetivas) para uma determinada unidade.
is there a command, which would find the cycles and show where each link in the cycle originates?
Para meu conhecimento, não existe tal comando. Na verdade, o systemd não oferece nada para auxiliar na depuração de ciclos de pedidos (suspiro).
According to journalctl, cvol.service wants basic.service, except that it doesn't, at least not obviously.
Primeiro, as dependências de requisitos ( Wants=
, Requires=
, BindsTo=
etc.) são independentes das dependências de ordenação ( Before=
e After=
). O que você vê aqui é um ciclo de dependência ordenando , i. e. não tem nada a ver com Wants=
etc.
Em segundo lugar, há um número de "dependências padrão" criadas entre unidades de determinados tipos. Eles são controlados pela diretiva DefaultDependencies=
na seção [Unit]
( que é ativado por padrão ).
Em particular, a menos que essa diretiva seja explicitamente desativada, qualquer unidade .service
-type obtém% dependências implícitasRequires=basic.target
e After=basic.target
, que é exatamente o que você vê. Isso está documentado em systemd.service (5) .