"Before ="ディレクティブの目的は何ですか?

"Before ="ディレクティブの目的は何ですか?

Requires=私には、他のサービスに依存するサービスの場合は、After=スクリプト(使用法とディレクティブ)に指定する方が自然に聞こえます。結局のところ、サービスを作成するときに、サービスに依存するすべてのサービスを実際に知ることはできませんが、サービスが何に依存しているのかがわかります。

それでは、質問は次のとおりです。Before=このディレクティブの実際の目的は何ですか?いつ使うべきですか?

答え1

Beforeまた、Afterサービス間の順序制約は指定しますが、サービス間の依存性制約は指定しません。したがって、Beforeそのサービス仕様書で特定のサービスに依存するサービスを徹底的に文書化する必要はありません。これは不可能です。

Before使用時わかる他のユニットが指定されたサービスに依存しない場合でも、サービスは他の既知のユニットの前に開始する必要があります。重要な側面は、知識のポイントを捉えることです。具体的には、サービスの説明では、特定の時間より前にサービスを開始する必要があることを明示するためによく使用されます。ターゲットは、サービスとターゲット間の順序制約を記述する唯一の合理的な方法です。たとえば、wpa_supplicant@ターゲットの前に開始する必要がありますnetwork。他の適切なケースには、改善されたサービスが改善されたサービスについて知ることが期待できない方法で他のサービスを「向上させる」サービスが含まれます。たとえば、fwupdサービスがgdm正常になる前に開始する必要がありますが、ユーザーはそれを期待できません。gdmサービスの後に開始する必要がありますfwupd(またはサービスによっては悪い場合があります)。

関連情報