Systemd: pára o processo principal (ou o serviço) quando uma falha do sub-processo

2

Eu tenho dois programas que chamei de program1 e program2 , que executam uma tarefa principal de duas operações. Quando program1 começar a executar, canalize seus resultados para program2 , que executa o resultado final. Como os dois programas devem ser executados continuamente, implementei um serviço systemd para isso e aqui está o conteúdo do arquivo /lib/systemd/system/servers.service .

[Unit]
Description=Start servers
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/servers >> /var/log/servers.log
Restart=always
TimeoutStartSec=100
User=root

ExecStartPre=killall -w -q program1 && killall -w -q program2
User=root

ExecStopPost=killall -w -q program1 && killall -w -q program2
User=root

[Install]
WantedBy=multi-user.target

Quando executar o serviço, o systemd cria dois processos para realizar a tarefa, aqui você pode ver o status.

sudo service servers status
# result
● servers.service - Start servers
   Loaded: loaded (/lib/systemd/system/servers.service; enabled)
   Active: active (running) since Wed 2016-06-29 21:00:27 UTC; 2h 5min ago
 Main PID: 11942 (server)
   CGroup: /system.slice/servers.service
           ├─11942 program1
           └─11944 program2

quando um dos programas falha, o serviço ainda está em estado de execução, o que não é logicamente correto, porque a tarefa principal está parada.

Por favor, gostaria de saber se é possível implementar tal situação com os serviços systemd? Se sim, como?

    
por Erman 30.06.2016 / 06:38

0 respostas