O systemd na verdade tem várias opções de configuração da unidade que você pode usar para expressar as dependências entre esses serviços.
Em particular, você desejará ver Requires= , Before= , After= , BindsTo= e PartOf= , os quais especificam diferentes maneiras pelas quais uma unidade pode ser iniciada ou interrompida em relação a outras unidades. Existem vários outros menos usados, então leia atentamente a documentação caso seus daemons possam usá-los.
(porque você não disse exatamente quais são as dependências entre seus serviços, não posso recomendar qual opção você deve usar.)
Além disso, o systemd pode ter unidades instanciadas , que iniciam o mesmo serviço, mas com uma configuração diferente. Uma unidade instanciada tem um nome terminando com @ , e a instância é o nome que segue o @ . No arquivo de unidade, %I e %i são substituídos pelo nome da instância, que você pode usar para carregar arquivos de configuração específicos. Por exemplo, em uma unidade instanciada [email protected] , você pode especificar:
ExecStart=/usr/bin/foo --daemon --config=/etc/foo/%i.conf
Em seguida, para ativar o foo service em uma instância bar , você diria:
systemctl enable foo@bar
O que fará com que o serviço foo comece com /etc/foo/bar.conf.
Note também que você pode especificar instâncias nos requisitos também. Por exemplo, se [email protected] exigir [email protected] do mesmo nome de instância, você poderá dizer em [email protected] :
Requires=b@%i.service