2つの競合するシステムデバイスを設定し、他のデバイスよりも優先されるようにするには?

2つの競合するシステムデバイスを設定し、他のデバイスよりも優先されるようにするには?

構成する必要があるシステム装置は2つあります。どちらも構成ファイルを特定の場所に設定する必要があるため(それぞれ独自の構成場所があるため)、すべて独自の構成ConditionPathExistsファイルが構成されています。

同じポートでリッスンしているため、互いに競合します。だから彼らはまた構成しましたConflicts=

ただし、両方の構成ファイルが存在する場合(通常の状況では発生しませんが発生する可能性がある場合)、サービスBの代わりにサービスAを開始したいと思います。このために何を構成する必要がありますか?

答え1

両方のユニットがキューに追加され、他のすべてが同じ場合(つまり、両方のユニットが同じWants =依存関係を介してプルされます)デバイスにConflicts=開始単位になり、「他のコンテンツと競合する」単位はスキップされます。

答え2

Systemdの優先順位の設定はわかりませんが、Systemd機能を使用して目標を達成できます。

# a.service
ConditionPathExists=/path/to/configfile.a
# b.service
ConditionPathExists=!/path/to/configfile.a
ConditionPathExists=/path/to/configfile.b

関連情報