Eu tenho uma pergunta sobre como criar meu próprio arquivo de unidade (serviço) para o Systemd.
Li a documentação e tive algumas dúvidas. Depois de pesquisar, encontrei esta resposta muito útil que fornece alguns detalhes sobre algumas das perguntas que eu estava tendo.
Como escrever um arquivo systemd .service executando systemd-tmpfiles
Embora eu ache essa resposta útil, ainda há uma parte que não entendo. Principalmente esta parte:
Como realmente queremos que esse serviço seja executado mais tarde, em vez de mais cedo, especificamos uma cláusula "Depois". Na verdade, isso não precisa ser o mesmo que o destino WantedBy (geralmente não é)
Meu entendimento de After é que é bastante direto. O serviço (ou o que você estiver definindo) será executado após a unidade listada em Depois.
Da mesma forma, WantedBy parece bastante direto. Você está definindo que a unidade que você lista tem um Desejo para o seu serviço. Portanto, para um destino como multiusuário ou gráfico, sua unidade deve ser executada para que o systemd considere esse destino alcançado.
Agora, supondo que meu entendimento de como essas declarações funcionam está correto até agora, minha pergunta é esta: Por que funcionaria listar a mesma unidade nas cláusulas After e WantedBy?
Por exemplo, definir uma unidade que é After multi-user.target e também WantedBy multi-user.target me parece que levaria a uma situação impossível em que a unidade precisa ser iniciada após o alvo ser atingido, mas também precisa ser iniciado para que a meta seja considerada "atingida".
Estou entendendo mal alguma coisa?
O
systemd
manual discute a relação entreBefore
/After
eRequires
/Wants
/Bindto
naBefore=, After=
seção :After
não implicaWants
ouWantedBy
, nem entra em conflito com essas configurações.Se ambas as unidades forem acionadas para iniciar,
After
afetará a ordem, independentemente da cadeia de dependência.Se o módulo listado em
After
não estiver em algum lugar na cadeia de dependências, ele não será carregado, poisAfter
não implica em nenhuma dependência.WantedBy
não influencia a ordem em que os serviços são iniciados. Conforme indicado no manual da unidade systemd , na descriçãoWantedBy
eRequiredBy
:Então, na
Wants
descrição, afirma que é uma versão mais fraca deRequires
onde afirma: