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