システム単位ファイル - WantedBy以上

システム単位ファイル - WantedBy以上

Systemd用のユニット(サービス)ファイルを作成する方法について質問があります。

マニュアルを読んで、いくつかの質問があります。いくつかの検索の後、私が経験しているいくつかの問題の詳細を提供する非常に便利な答えを見つけました。

systemd-tmpfilesを実行するsystemd .serviceファイルを作成する方法

この答えが役に立ちましたが、まだ理解していない部分があります。主にこの部分:

私たちは実際にサービスをより速く実行するのではなく、後で実行したいので、「After」句を指定します。実際、WantedByターゲットと同じである必要はありません(通常はそうではありません)。

Afterの私の理解は、それが非常に簡単だということです。このサービス(またはユーザーが定義したサービス)は、後述の単位の後に実行されます。

同様に、WantedByも単純に見えます。お客様は、お客様がリストしたユニットにお客様のサービスが必要と定義しています。したがって、マルチユーザーやグラフィックなどの目標の場合、systemdが目標が達成されたと考えるようにデバイスを実行する必要があります。

今まで、これらの宣言がどのように機能するかについての理解が正しいと仮定すると、私の質問は次のようになります。 AfterとWantedBy句に同じ単位をリストするのはなぜですか?

たとえば、After multi-user.targetおよびWantedBy multi-user.targetユニットを定義すると、目標に達した後にユニットを開始する必要がありますが、開始と見なす必要がある不可能な状況が発生しているようです。 「到達」を目指します。

私が何かを間違って理解したのでしょうか?

答え1

マニュアルでは、/と//のsystemd関係を説明します。BeforeAfterRequiresWantsBindtoBefore=, After=部分:

この設定は、Requires =、Wants =、またはBindsTo =で構成される要件の依存関係とは無関係で直交です。 After= および Requires= オプションにデバイス名を含めるのが一般的なパターンです。

Afterこれらの設定を暗黙的にまたはWants競合させません。WantedBy

両方のデバイスが起動し、依存After関係チェーンに関係なく順序が影響を受けます。

リストされたモジュールがAfter依存関係チェーンのどこかにない場合、依存関係は暗黙的ではないためロードされませんAfter

答え2

WantedByサービスが開始される順序には影響しません。で述べたようにシステムデバイスのマニュアルWantedByおよびRequiredBy説明:

これは、リストされているデバイスのWants =またはRequires =タイプの依存関係を現在のデバイスに追加する効果があります。

Wantsそれから説明はRequiresそれが言うものの弱いバージョンであると述べられています。

需要依存性は、サービスの開始または停止の順序には影響しません。

関連情報