私はシステムを持っています:
- サービス1.サービス
- サービス2.サービス
- サービス3.サービス
service1.service は次のようになります。
[Unit]
Wants=service2.service service3.service
After=service2.service service3.service
[Service]
ExecStart=/var/scripts/script.sh
[Install]
WantedBy=multi-user.target
このservice1.serviceは何をすべきかをします。it brings up services 2 and 3 before ExecStart
これは私が必要とする仕事の50%です。残りの50%は終了、終了、またはservice2
他の終了時にservice3
終了します。service1
systemctl stop service1
SIGKILL
このタスクをどのように構成service2
/service3
実行する必要がありますか?
答え1
見ている文書、いくつかのオプションが利用できるようです。
最も簡単なPropagatesStopTo=
オプションはおそらく次のとおりです。
PropagatesStopTo=
、StopPropagatedFrom=
停止要求を伝播する必要がある1つ以上のデバイスのスペースで区切られたリスト。デバイスに対して停止要求を発行すると、これら2つの設定を使用して、そのデバイスに接続されているすべてのデバイスの停止要求が自動的にキューに追加されます。
service1.service
次のように設定すると:
[Unit]
Wants=service2.service service3.service
After=service2.service service3.service
PropagatesStopTo=service2.service service3.service
[Service]
Type=exec
ExecStart=...
それから平和をsystemctl start service1
もたらし、同時に平和ももたらしました。service2
service3
systemctl stop service1
service2
service3
PartOf
一部の操作を使用または実行することもできますが、BindsTo
そのためには依存サービス(service2
およびservice3
)を変更する必要があります。