Systemd用のユニット(サービス)ファイルを作成する方法について質問があります。
マニュアルを読んで、いくつかの質問があります。いくつかの検索の後、私が経験しているいくつかの問題の詳細を提供する非常に便利な答えを見つけました。
systemd-tmpfilesを実行するsystemd .serviceファイルを作成する方法
この答えが役に立ちましたが、まだ理解していない部分があります。主にこの部分:
私たちは実際にサービスをより速く実行するのではなく、後で実行したいので、「After」句を指定します。実際、WantedByターゲットと同じである必要はありません(通常はそうではありません)。
Afterの私の理解は、それが非常に簡単だということです。このサービス(またはユーザーが定義したサービス)は、後述の単位の後に実行されます。
同様に、WantedByも単純に見えます。お客様は、お客様がリストしたユニットにお客様のサービスが必要と定義しています。したがって、マルチユーザーやグラフィックなどの目標の場合、systemdが目標が達成されたと考えるようにデバイスを実行する必要があります。
今まで、これらの宣言がどのように機能するかについての理解が正しいと仮定すると、私の質問は次のようになります。 AfterとWantedBy句に同じ単位をリストするのはなぜですか?
たとえば、After multi-user.targetおよびWantedBy multi-user.targetユニットを定義すると、目標に達した後にユニットを開始する必要がありますが、開始と見なす必要がある不可能な状況が発生しているようです。 「到達」を目指します。
私が何かを間違って理解したのでしょうか?
ベストアンサー1
マニュアルでは、/と//のsystemd
関係を説明します。Before
After
Requires
Wants
Bindto
Before=, After=
部分:
この設定は、Requires =、Wants =、またはBindsTo =で構成される要件の依存関係とは無関係で直交です。 After= および Requires= オプションにデバイス名を含めるのが一般的なパターンです。
After
これらの設定を暗黙的にまたはWants
競合させません。WantedBy
両方のデバイスが起動し、依存After
関係チェーンに関係なく順序が影響を受けます。
リストされたモジュールがAfter
依存関係チェーンのどこかにない場合、依存関係は暗黙的ではないためロードされませんAfter
。