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.serviceirá 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)