次の例を考えてみましょう。
console-scaling.service
起動時にコンソールフォントを調整し、/ dev / fb0デバイスが必要なサービスがあります。したがって、udevルールを追加しました。
KERNEL=="fb0", SUBSYSTEM=="graphics", TAG+="systemd", ENV{SYSTEMD_WANTS}+="console-scaling.service"
一見すると、これはWanted=dev-fb0.device
サービス定義と同等の機能を効果的に追加するので理解できます。
しかし、サービスが実行されないことを保証するものは何ですか?今後デバイスが作成されましたか?つまり、Wanted=...
その句を追加する前に?
答え1
しかし、デバイスが作成される前にサービスが実行されないようにするにはどうすればよいですか?つまり、Wanted=...句を追加する前に?
いいえ。 WantedByは不要です。反対依存関係。あなたが求めるのは、サービスからデバイスへの依存です。 udevは正反対です。
(もっと正確に言えば、この条項はいいえサービスに完全に追加されました。 [Install] WantedByは「実際の」依存関係ではないので役に立ちません。逆に、装備ユニット獲得[Unit]はあなたのサービスに頼りたいです。 )
したがって、サービスがデバイスを要求するようにするには、サービスで文字通り指定します。
[Unit]
Wants=dev-fb0.device (Requires or even Requisite would be better)
After=dev-fb0.device
2つのユニットは、お互いに希望/要求依存関係を持つことができます。注文する(つまり、前/後)は円形ではありません。