Obtendo um serviço iniciado automaticamente quando outro é iniciado

3

Eu tenho um serviço que depende de outro:

[Unit]
After=main.service
Requires=main.service

[Service]
ExecStart=/usr/local/bin/dependent
Restart=always

As coisas do kool:

  • A execução de systemctl stop main faz com que esse dependent service também pare
  • A execução de systemctl restart main faz com que dependent service também seja iniciado

Mas, a execução de systemctl main start não faz com que este serviço dependente seja iniciado.

Como faço isso?

    
por Tshepang 03.08.2015 / 17:29

1 resposta

4

Os parâmetros After= e Before= são estritamente para solicitar a inicialização (e talvez o desligamento) de dois serviços se ambos forem solicitados a serem iniciados. Ter um serviço listado não significa que esses serviços também serão iniciados.

Se você quiser controlar se outro serviço será iniciado, use Requires= , Wants= ou Conflicts= (que vão na seção [Unit] ) ou WantedBy= (que entra em a seção [Install] ).

No seu caso, você deseja iniciar um serviço quando algo dependente dele é iniciado (o que não acontece automaticamente, pois não há motivo para isso). Você desejará adicionar o seguinte ao arquivo e, em seguida, executar systemctl enable dependent :

[Install]
WantedBy=main.service

Isso diz que quando main for iniciado, para iniciar também este serviço e se esse serviço falhar, não pare main .

    
por 03.08.2015 / 21:35

Tags