Systemd reiniciar o serviço se um dos processos no grupo de controle falhar

3

Eu tenho uma unidade de serviço systemd:

[Unit]
After=network.target

[Service]
User=<user>
Type=forking
ExecStart=/opt/app/start.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target

O /opt/app/start.sh inicia vários processos e os empilha:

for i in 1 2 3 4 5; do
    bash another_script.sh &
done

Tudo funciona bem, até que um dos processos bash another_script.sh saia com status diferente de zero. Espero que o serviço systemd seja reiniciado nessa situação. Existe alguma maneira de assistir a falhas no grupo de controle e reiniciar o serviço se isso acontecer?

    
por Rahul Katrakhtalapali 17.03.2017 / 06:50

2 respostas

0

De help wait :

If the -n option is supplied, waits for the next job to terminate and returns its exit status.

Portanto, você deve poder usar wait -n em seu script para saber quando algum dos trabalhos terminou.

    
por 17.03.2017 / 10:19
0

Grupos de controle não são trabalhos.

Não existe uma "falha no grupo de controle". Grupos de controle são apenas coleções usadas para limitação de recursos. Eles não "falham".

Que falha existe aqui, é uma falha para projetar um serviço corretamente. Se alguém tem vários processos do daemon para monitorar, e um quer que o gerenciador de serviços os reinicie individualmente se eles terminarem, então deve-se definir vários serviços.

Leitura adicional

por 17.03.2017 / 14:29