systemd suporte para alternar serviços mutuamente exclusivos?

4

Eu tenho duas versões de um serviço que eu ocasionalmente quero alternar entre - my-service-a e my-service-b. Eu quero que meu-service-a seja sempre aquele que está sendo executado quando o sistema é inicializado. Atualmente, para alternar entre eles, tenho que executar vários comandos, por exemplo, para mudar de a para b

systemctl stop my-service-a
systemctl start my-service-b

e não há aplicação por systemd que apenas um está sendo executado de cada vez - eu só tenho que ter cuidado.

Existe algum suporte direto para esta situação no systemd? Eu podia ver que era tanto suporte para "alternar" entre serviços, quanto instanciações de um serviço modelado, ou eu poderia vê-lo como suporte para serviços mutuamente exclusivos, de modo que quando eu iniciasse meu serviço-b, meu-serviço-a está automaticamente parado. Ou talvez haja outra maneira inteiramente diferente.

    
por ajp 18.08.2015 / 19:14

1 resposta

4

Você pode fazer isso adicionando a diretiva Conflicts= à seção [Unit] de seus dois arquivos de unidade ( Conflicts= em apenas um arquivo de unidade também funciona). Na página man do systemd.unit (5) :

A space-separated list of unit names. Configures negative requirement dependencies. If a unit has a Conflicts= setting on another unit, starting the former will stop the latter and vice versa. Note that this setting is independent of and orthogonal to the After= and Before= ordering dependencies.

    
por 19.08.2015 / 00:38

Tags