Como fazer com que os processos do monitor do systemd sejam iniciados usando um script de shell no arquivo de serviço?

Como fazer com que os processos do monitor do systemd sejam iniciados usando um script de shell no arquivo de serviço?

Eu escrevi um arquivo de serviço no Linux que chama um script que inicia vários processos, sendo um primário e outros secundários.

ARQUIVO DE SERVIÇO:

[Unit]
Description=TEST service

Requires=abc.service
Wants=def.service

RefuseManualStop=yes

[Service]
Type=Forking
KillSignal=SIGTERM
# We prefix '-' to tell systemd that ignore the non-zero return values on stop service
ExecStart=-/bin/bash test_abc.sh
ExecStopPost=-/root/.abc/abc_stop.sh
# On reload we just perform restart of service
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
PIDFile=/var/run/abc.pid

[Install]
WantedBy=multi-user.target

E quando o serviço é iniciado, o status é mostrado abaixo:

[root@CentOS-126 core]# systemctl status abc.service
� abc.service - ABC service
   Loaded: loaded (/usr/lib/systemd/system/abc.service; disabled; vendor preset: disabled)
   Active: active (running) since Wed 2020-01-22 14:13:45 IST; 43s ago
  Process: 13286 ExecStopPost=/root/.abc/abc_stop.sh (code=exited, status=0/SUCCESS)
 Main PID: 13691 (abc-00)
   CGroup: /system.slice/abc.service
           ��13691 /usr/sbin/abc -c 0x111 --proc-type=primary
           ��13745 abctm
           ��13756 /usr/sbin/abc -c 0x111 --proc-type=secondary
           ��13776 /usr/sbin/abc -c 0x111 --proc-type=secondary

Como você pode ver, o processo primário é igual ao MAIN PID no status. No entanto, quando eu encerro o processo, o systemd deve reiniciar automaticamente o processo. O que não está acontecendo no meu caso. Li em outra resposta que no caso type=forkingdo MainPID não é levado em consideração. Tentei substituí-lo, type=simplemas também não ajudou. Qualquer ajuda será realmente apreciada!

informação relacionada