Como nas páginas de manual , StopWhenUnneeded=true
significa "parar esta unidade assim que nenhuma outra unidade ativa depender dela mais ".
Por exemplo, se você iniciar app.target
, isso depende de app-web-1.target
, que também será iniciado e, da mesma forma, depende de app-web-1.service
.
Mas se você parar o principal app.target
depois, normalmente ele não afetaria outras duas unidades - eles não têm dependências na direção "reversa", então ambos app-web-1.target
e app-web-1.service
continuariam em execução.
Em outras palavras, a intenção mais provável era permitir que alguém parasse tudo usando apenas systemctl stop app.target
, sem ter que parar cada serviço manualmente. Teria funcionado se a configuração estivesse apenas nos arquivos de subunidade "sub" (embora não seja o ideal - BindsTo = é melhor neste caso).
Portanto, o problema é com StopWhenUnneeded=
na unidade principal app.target. Como você o inicia manualmente, ele nunca tem nenhuma outras unidades dependendo dele, portanto, ele será interrompido imediatamente.