体系化:ニーズと欲求

体系化:ニーズと欲求

違いはありますか?必要そして〜したいターゲットファイルに?

[Unit]
Description=Graphical Interface 
Documentation=man:systemd.special(7)
Requires=multi-user.target
Wants=display-manager.service

ありがとう

ベストアンサー1

heemaylがコメントで指摘したように、マニュアルページはあなたの質問に対する答えです。インターネットから:

欲しい=

Requires= の弱いバージョンです。ハイブがすでに起動している場合は、このオプションにリストされているデバイスが起動します。ただし、リストされているデバイスがアクティブでない場合やトランザクションに追加できない場合、これはトランザクション全体の有効性には影響しません。これは、あるデバイスの起動を別のデバイスの起動に接続するための推奨方法です。

そして

必要=

他のユニットの要件依存関係を構成します。このデバイスがアクティブになると、ここにリストされているデバイスもアクティブになります。他のデバイスのいずれかが無効または有効になっていない場合、このデバイスは無効になります。このオプションは複数回指定することも、1つのオプションでスペースで区切った複数の単位で指定することもできます。この場合、リストされているすべての名前に対して要件の依存関係が生成されます。需要依存性は、サービスの開始または停止の順序には影響しません。これはAfter =またはBefore =オプションを使用して独立して設定する必要があります。 foo.service デバイスに Requires= で構成される bar.service デバイスが必要で、After= または Before= で構成された順序がない場合、foo.service が有効になると、2 つのデバイス間で遅延なく同時に起動されます。通常、失敗したサービスに対してシステムをより強力にするには、Requires =の代わりにWants =を使用することをお勧めします。

この依存関係タイプは、このデバイスが実行されているときに他のデバイスを常にアクティブにする必要があるわけではありません。具体的には、失敗した条件チェック(ConditionPathExists =、ConditionPathExists =、... - 以下を参照)は、Requires =依存関係を持つデバイスの起動操作に失敗することはありません。さらに、一部のデバイスタイプはそれ自体で無効にすることができます(たとえば、サービスプロセスが完全に終了することを決定したり、ユーザーがデバイスのプラグを抜くことがあります)。これはRequires =依存関係を持つデバイスには伝播されません。 After= と共に BindsTo= 依存関係タイプを使用すると、他の特定のユニットもアクティブでない限り、そのユニットがアクティブにならないようにすることができます (下記参照)。

~からfreedesktop.org ページ

サービスは次の場合にのみ開始されます。マルチユーザーターゲット到達すると(該当するターゲットに追加しようとするとどうなりますか)、systemdは起動を試みます。ディスプレイマネージャ。サービスあなたのサービスで。もしディスプレイマネージャ。サービス失敗の理由に関係なく、サービスは引き続き開始されます(したがって、ディスプレイマネージャが本当に必要な場合はRequires=それを使用してください)。もしマルチユーザーターゲットただし、到達しないとサービスは開始されません。

あなたのサービスは何ですか?キオスクシステムですか?直感的に、私はサービスをmulti-user.targetに追加し(起動時に起動します)、厳密に依存するようにしたいと思います。ディスプレイマネージャ。サービス通過するRequires=display-manager.service。だが今すぐはそれはただのとんでもない推測にすぎない。

おすすめ記事