centos reiniciando um serviço e suas dependências

2

Eu configurei 4 serviços que devem ser iniciados em uma ordem específica. Vamos dizer:

serv1 = > serv2 = > serv3 | serv4

A ordem para serv3 ou serv4 não é importante, desde que ambos sejam iniciados após o serv2.

Então eu construo os seguintes arquivos de serviço:

serv3.service (serv4.service é semelhante):

[Unit]
Description=Starts serv3
After=network.target serv1.service serv2.service

[Service]
Type=forking
User=root
ExecStart=/usr/bin/services/serv3start.sh
ExecStop=/usr/bin/services/serv3stop.sh
Restart=always

[Install]
WantedBy=multi-user.target

serv2.service:

[Unit]
Description=Starts serv2
After=network.target serv1.service

[Service]
Type=forking
User=root
ExecStart=/usr/bin/services/serv2start.sh
ExecStop=/usr/bin/services/serv2stop.sh
Restart=always

[Install]
WantedBy=multi-user.target

serv1.service:

[Unit]
Description=Starts serv1
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/bin/services/serv1start.sh
ExecStop=/usr/bin/services/serv1stop.sh
Restart=always

[Install]
WantedBy=multi-user.target

Os scripts .sh não são nada além de arquivos de script de uma linha, cada um iniciando / interrompendo um programa Java diferente.

Até agora, tudo bem.

O problema é: quando eu reinicio o serv3 ou o serv4 (por exemplo, por systemctl restart serv3 ), todos os quatro serviços são reiniciados.

O que estou fazendo de errado?

    
por jpavel 10.03.2018 / 21:30

1 resposta

0

Depois de passar dois dias com ele, acabou o problema com Type=forking . Aparentemente, todos os meus serviços são garfos de algum processo pai comum e quando eu reiniciei um deles, eu estava realmente reiniciando o processo pai, que por sua vez reiniciava os outros.

Se alguém me der uma explicação completa para isso, vou marcá-lo como a resposta correta.

Acho que a chave são os scripts .sh que acionaram os programas java, todos eles como:

#! /bin/sh
java -jar /path_to_java_program/java_program.jar&

Agora, como meus programas java têm um script de início incorporado, estou apenas fazendo algo como (em todos eles):

[Unit]
Description=Starts java_program
After=network.target and other dependencies

[Service]
Type=simple
User=root
ExecStart=/path_to_the_java_program/java_program.jar
ExecStop=/usr/bin/services/serv1stop.sh
Restart=always

[Install]
WantedBy=multi-user.target
    
por 11.03.2018 / 14:07