Systemd: 하위 프로세스 충돌 시 기본 프로세스(또는 서비스) 중지

Systemd: 하위 프로세스 충돌 시 기본 프로세스(또는 서비스) 중지

두 가지 작업의 주요 작업을 수행 program1하는 두 가지 프로그램이 있습니다 . 실행이 시작 program2되면 결과를 파이프하여 최종 결과를 실행합니다. 두 프로그램 모두 지속적으로 실행되어야 하기 때문에 이를 위해 systemd 서비스를 구현했으며 이것이 파일의 내용입니다.program1program2/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

서비스를 실행할 때 systemd는 작업을 구현하기 위해 두 개의 프로세스를 생성하며 여기에서 상태를 볼 수 있습니다.

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

프로그램 중 하나가 충돌하면 서비스가 계속 실행되고 있는데 이는 기본 작업이 중지되었기 때문에 논리적으로 올바르지 않습니다.

이 상황을 달성하기 위해 systemd 서비스를 사용할 수 있는지 알려주시겠습니까? 그렇다면 어떻게 해야 할까요?

관련 정보