Systemd:サブプロセスがクラッシュしたときにデフォルトプロセス(またはサービス)を停止する

Systemd:サブプロセスがクラッシュしたときにデフォルトプロセス(またはサービス)を停止する

2つのタスクの主なタスクを実行するprogram12つのプログラムがあります。実行が開始さ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 はタスクを実装するために 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サービスを使用できるかどうか教えてください。それでは、どうすればいいですか?

ベストアンサー1

おすすめ記事