Existe alguma maneira de reiniciar automaticamente um serviço systemd se algum de seus processos bifurcados for morto?
Depois de criar um arquivo de unidade systemd para Control-M
[Unit]
After = network-online.target
After = remote-fs.target
Description = Control-M agent
Wants = network-online.target
[Service]
ExecStart = /opt/ctmagent/ctm/scripts/start-ag -u ctmagent -p ALL
ExecStop = /opt/ctmagent/ctm/scripts/shut-ag -u ctmagent -p ALL
Restart = always
RestartSec = 5
TimeoutSec = 5min
Type = forking
[Install]
WantedBy = multi-user.target
Percebi que ele bifurca 3 processos diferentes
# systemctl status ctmag.service
CGroup: /system.slice/ctmag.service
├─129041 /opt/ctmagent/ctm/exe/p_ctmag
├─129089 /opt/ctmagent/ctm/exe/p_ctmat
└─129091 /opt/ctmagent/ctm/exe/p_ctmatw -ATW_NAME ATW000
Se eu matar p_ctmag
, o systemd reinicia tudo, no entanto, se eu matar p_ctmat
, não
Ou, desde p_ctmat
opens 127.0.0.1:7035
, o systemd pode monitorar essa porta e reiniciar o serviço se fechado?
PS1: Eu não tenho controle sobre start-ag
e shut-ag
, então o serviço de reinicialização do Systemd se um dos processos no grupo de controle falhar não ajudará aqui.
PS2: Além disso, não consigo adicionar outra 'camada' de script, envolvendo o script em outra. Precisa de solução de arquivo de unidade systemd pura.