Usando a diretiva PartOf
junto com a unidade de destino para começar todos os serviços como um grupo parece alcançar meus objetivos.
Meus arquivos de serviço agora são assim:
[Unit]
Description=foo
After=syslog.target network.target
PartOf=foo.service bar.service baz.service all-services.target
[Service]
User=foo
WorkingDirectory=~
Restart=always
RestartSec=90
StartLimitInterval=400
StartLimitBurst=3
SyslogIdentifier=foo
ExecStart=/path/to/binary
[Install]
WantedBy=all-services.target
e o alvo de agrupamento parece:
[Unit]
Description=all-services
PartOf=foo.service bar.service baz.service
Eu posso iniciar e reiniciar foo
, bar
e baz
services executando systemctl start all-services.target
e eliminando o processo usado por foo
, fazendo com que todos sejam interrompidos e reiniciados.
Uma coisa que não está clara é que se eu executar systemctl stop all-services.target
, todos os serviços serão interrompidos, mas um systemctl start all-services.target
do estado parado só inicia a unidade de destino em vez de todos os serviços.
Eu tentei trocar WantedBy
para RequiredBy
nas unidades de serviço, mas isso não parece mudar nada.