特定のシステムサービスでシステムサービスを開始/終了しますか?

特定のシステムサービスでシステムサービスを開始/終了しますか?

私はシステムを持っています:

  • サービス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終了します。service1systemctl stop service1SIGKILL

このタスクをどのように構成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もたらし、同時に平和ももたらしました。service2service3systemctl stop service1service2service3

PartOf一部の操作を使用または実行することもできますが、BindsToそのためには依存サービス(service2およびservice3)を変更する必要があります。

関連情報