He escrito un archivo de servicio en Linux que llama a un script que inicia múltiples procesos, uno como principal y otros como secundario.
ARCHIVO DE SERVICIO:
[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
Y cuando se inicia el servicio, el estado se muestra a continuación:
[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 puede ver, el proceso primario es el mismo que el PID PRINCIPAL en el estado. Sin embargo, cuando finalizo el proceso, systemd debería reiniciarlo automáticamente. Cosa que no ocurre en mi caso. Leí en otra respuesta que en caso de type=forking
, el MainPID no se tiene en cuenta. Intenté reemplazarlo type=simple
pero eso tampoco ayudó. ¡Cualquier ayuda será muy apreciada!