サービス ファイル内のシェル スクリプトを使用して systemd がプロセスを監視するようにするにはどうすればよいですか?

サービス ファイル内のシェル スクリプトを使用して systemd がプロセスを監視するようにするにはどうすればよいですか?

Linux で、1 つのプロセスをプライマリ、他のプロセスをセカンダリとして複数のプロセスを開始するスクリプトを呼び出すサービス ファイルを作成しました。

サービスファイル:

[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

サービスが開始されると、ステータスは次のように表示されます。

[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

ご覧のとおり、プライマリ プロセスはステータスの MAIN PID と同じです。ただし、プロセスを強制終了すると、systemd は自動的にプロセスを再起動する必要があります。私のケースでは、これは発生していません。別の回答で、 の場合type=forking、MainPID は考慮されないと読みました。 に置き換えてみましたがtype=simple、それでも効果はありませんでした。どんな助けでも本当にありがたいです!

関連情報