「Wants =」と「After =」行の両方にsystemd単位を指定する必要がありますか、それとも「After =」で十分ですか?

「Wants =」と「After =」行の両方にsystemd単位を指定する必要がありますか、それとも「After =」で十分ですか?

Wants=次の内容と説明を含むsystemdサービスタイプの単位があるとしますAfter=

Wants=foo.service
After=foo.service

onがすでにオンになっている場合は、実際に指定する必要がありますかfoo.service?または、単位が指定されていないとまったく起動しないため、必要になる場合があります。Wants=After=Wants=foo.servicefoo.serviceWants=Requires=foo.service

ベストアンサー1

Wants=状況によっては、どちらも可能で、どちらも操作を実行しますが、効果が異なるため、他のデバイスが起動したときにそのデバイスを起動するには、そのデバイスを維持する必要がありfoo.serviceます。

たとえば、順次依存関係のみがある場合、After=foo.serviceこれは両方のデバイスが起動した場合(同じトランザクションで)、foo.service現在のデバイスを起動する前にsystemdが最初に起動して完全に起動するのを待つことを意味します。

これは有効かどうかは必ずしもわからず、foo.serviceサービスはどのように動作する可能性がありますが、もし foo.service有効にすると、サービスを開始する前に開始しようとします。

または、単位が指定されていないとまったく起動しないため、必要になる場合がWants=foo.serviceあります。foo.serviceWants=Requires=foo.service

はい、そうです。命令はシーケンス専用命令であるため、他のユニットをインポートせず、そのユニットがすでに他の手段でアクティブになっている場合にのみシーケンスに影響します(通常はそれ自体が直接アクティブになるか、3番目のユニットを介してまたはそれに応じてアクティブになりますAfter=)。 )Before=Wants=Requires=

おすすめ記事