
2つのタスクの主なタスクを実行するprogram1
2つのプログラムがあります。実行が開始さ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 はタスクを実装するために 2 つのプロセスを作成し、ここでステータスを表示できます。
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
プログラムの1つがクラッシュした場合、サービスは引き続き実行されていますが、これは基本操作が停止したため論理的に正しくありません。
この状況を達成するためにsystemdサービスを使用できるかどうか教えてください。それでは、どうすればいいですか?