解決策 1:
systemctl edit smb.service
を使用 依存関係を更新します。
After=dirsrv.target
- dirsrv.target の後に smb.service が確実に開始されるようにします。
堅牢性のために (これは、このようなものをいじくり回している場合には価値があります)、次のいくつかを含めることもできます:
Requires=dirsrv.target
- smb.service がアクティブ化されたときに、dirsrv.target をアクティブ化します。 dirsrv.target が失敗すると、smb.service が失敗します。
Wants=dirsrv.target
- smb.service がアクティブ化されたときに、dirsrv.target をアクティブ化します。 dirsrv.target が失敗しても、smb.service は失敗しません。
BindsTo=dirsrv.target
- dirsrv.target が無効になっている場合は、smb.service を無効にします。
ソース:http://www.freedesktop.org/software/systemd/man/systemd.unit.html
systemd-ui
systemd の GUI を提供します。 systemd の状態がよくわかりますが、テキスト エディターを使用してユニット ファイルを変更する必要があります。
解決策 2:
2 つのことを行います:
<オール>
/lib/systemd/system/smb.service
を編集します ユニット ファイル、依存関係を指定します。 [unit]
セクションに After=
が含まれています この行の前に、どのサービス/ターゲットに到達する必要があるかを指定する行。
After=syslog.target network.target nmb.service winbind.service
次のように変更します:
After=dirsrv.target syslog.target network.target nmb.service winbind.service
この依存関係をバグとして Fedora に報告し、将来のリリースに組み込むことができるようにしてください。
解決策 3:
Requires
の行を変更または含める必要があるかもしれません [Unit]
のディレクティブ /usr/lib/systemd/system/smb.service
のセクション ファイル。
Requires=dirsrv.target
そして
After=dirsrv.target
解決策 4:
/usr/lib/systemd/system
のサービス ファイルを変更する方法は 2 つあります。 (例 2. ベンダー設定のオーバーライドを参照):
ファイルを /etc/systemd/system
にコピーします コピーに変更を加えます。このファイルは /usr/lib
のファイルを完全に上書きします .
ファイル /etc/systemd/system/smb.service.d/local.conf
を作成します .ファイルの内容は、次の例のようになります。これにより、ベンダー提供のサービス ファイルの「Requires」および「After」オプションが選択的に上書きされます。
これらのそれぞれ (/usr/lib
のファイルの変更を含む) ) には、長所と短所があります。最適な選択は、サービスと変更の性質によって異なります。
うまくいくかもしれませんが、「After」オプションを追加するだけでは十分ではありません ([Unit] セクションのオプションを参照してください)。 「後」は順序を制御しますが、依存関係は制御しません。 dirsrv.target
の場合 他の方法で開始されていないため、順序を指定しても開始されません。 「Requires」または「Wants」オプションを使用すると、dirsrv.target
が強制されます
[Unit]
Requires=dirsrv.target
After=dirsrv.target
注:この質問が最初に尋ねられたときに、このアプローチが利用可能であったかどうかはわかりません。