O problema é que echo não é forking - nenhum processo filho é deixado para trás. O que você precisa é de um oneshot service, com RemainAfterExit=true . Se você apenas alterá-lo para oneshot , obterá exatamente o mesmo comportamento. A parte RemainAfterExit informa que mesmo após o ExecStart sair, o serviço ainda deve ser considerado em execução, portanto, ele não deve executar ExecStop (s).