Existem duas maneiras: uma implícita e uma explícita.
Primeira maneira - StopWhenUnneeded=
A primeira maneira é usar a diretiva StopWhenUnneeded=
. Se uma unidade tiver StopWhenUnneeded=yes
, ela será automaticamente interrompida quando não houver nenhuma unidade ativa que Wants=
/ Requires=
da unidade em questão. Por isso:
- isso só funcionará se essas unidades forem
WantedBy=
somente pormycustom.target
; - você não poderá iniciar nenhuma dessas unidades manualmente (isto é,
systemctl start myunit.service
irá iniciá-lo e pará-lo imediatamente depois).
Segunda via - um pipeline de shell
A segunda maneira é construir um pipeline de shell simples, usando systemctl show -p
para extrair a lista de dependências de mycustom.target
.
Mais especificamente, systemctl show UNIT
mostrará todas as propriedades de uma unidade em um formulário KEY = VALUE e systemctl show -p PROPERTIES UNIT
fará o mesmo, limitando o conjunto de propriedades mostradas. Então:
systemctl stop -- $(systemctl show -p Wants mycustom.target | cut -d= -f2)