systemd がオーバーライド設定を期待どおりに解析しないのはなぜですか?

systemd がオーバーライド設定を期待どおりに解析しないのはなぜですか?

以下の現象は、Arch Linux でも Ubuntu Artful でも再現できるため、 の詳細を取得できていないと結論付けましたsystemd

Docker デーモンがサービスとして起動された後に実行されるコマンドを追加したいだけですsystemd

エディターを呼び出しsystemctl edit docker.service、評価手段として次のように入力します。

[Service]
ExecStartPost=true

現在、その内容のファイルが存在するため、確認のために/etc/systemd/system/docker.service.d/override.conf呼び出します。systemctl daemon-reload

ここで、解析されたユニットを表示すると、予想していたとおり、出力にディレクティブは表示されません。A はsystemctl show docker.service何も生成しません。ExecStartPostsystemd-analyze verify

では、ExecStartPostオーバーライド ファイルの が によってユニットの一部と見なされないのはなぜでしょうかsystemd?

オーバーライドディレクティブを含むファイルが実際に評価されるかどうかをテストするために、次のコンテンツを試しました。

[Service]
ExecStart=
ExecStart=foo

驚いたことに、ExecStartの出力にディレクティブが表示されなくなりましたsystemctl show docker.service

この場合、最初の指令は考慮されるのに、2 番目の指令は考慮されないのはなぜか、誰か説明してもらえますか?

答え1

私の間違いは、次のようにコマンドへの絶対パスを指定しなかったことのようです。

[Service]
ExecStartPost=/bin/true

関連情報