GNU/Linux >> Linux の 問題 >  >> Linux

Systemd の依存関係と起動順序

解決策 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
    

    注:この質問が最初に尋ねられたときに、このアプローチが利用可能であったかどうかはわかりません。


    Linux
    1. Linuxsystemdに新しいサービスを追加する

    2. Systemdを使用した非グラフィカルブート?

    3. Linux – Vboxサービスを無効にして起動時間を短縮しますか?

    1. CentOS/RHEL 7 および 8 で systemd ブート プロセスをデバッグする方法

    2. systemd サービスを停止する方法

    3. systemd ユーザー サービスをシステム ターゲットに依存させる

    1. systemd RHEL 7 Linuxサーバーでサービスを開始、停止、再起動します

    2. 10の便利なsystemdコマンド:リファレンス

    3. Solarisサービスのステータスと依存関係?