2017-04-03 6 views
0

私はsystemdサービスを作成しています。Aと呼ばれる特定のサービスの後に起動して特定のスクリプトを実行するたびに、起動するたびにUbuntu 16.04でBとしましょう。これまでのところ私は、次のフィールドで構成され、サービス単位のファイルを作成しました:systemdサービスの停止がどのように異なる停止を引き起こすことができますか?

[Unit] 
Description=B 
After=A.service 

[Service] 
ExecStart=/opt/B.sh 

[Install] 
WantedBy=multi-user.target 

さらに私はサービスBの停止をトリガするために、サービスAの停止を希望はしてそれを行うことが有効ですAサービスユニットファイルの次のコマンド

ExecStop=systemctl stop A.service 

または別の方法がありますか?可能であれば、私は既存のAサービスファイルユニットを変更しないことを望みます。

答えて

1

2つのsystemd機能を組み合わせて問題を解決することができます。

まず、drop-inファイルを使用して、既存のsystemd confファイルを変更せずに拡張できます。パターンは次のとおりです。

  1. /etc/systemd/system/A.d/stop-b.confを作成します。
  2. はそれにこれを追加:Aが停止しているときにBを停止したい場合だろう

[Service] ExecStopPost=systemctl stop B.service

。 2番目の機能は、サービスが停止したときに追加のコマンドを実行させるためのExecStopPost=ディレクティブです。

関連する問題