multi-user.targetとは何か、およびmulti-user.targetが特別なターゲットであると述べているsystemdのドキュメントを読みました。さらに、systemdの例の多くにはその行が含まれています。
- なぜこれほど多くのサンプルサービスにその行が含まれているのですか?
- WantedBy =multi-user.targetが含まれていなかった場合はどうなりますか?
- サービスファイルの定義にその行を含めないことが実際に推奨される場合の例を教えてください。
- 同じ線に沿って、いつその線を維持するのが良い考えですか?
承認された回答:
1.)multi-user.target
これは基本的に、systemd
である従来のSysVinitランレベル3に最も近いものです。 もっている。 systemd
の場合 システムが起動します、systemd
システムの状態をdefault.target
で指定された状態と一致させようとしています –これは通常、いずれかのgraphical.target
のエイリアスです。 またはmulti-user.target
。
multi-user.target
通常、すべてのネットワークサービスが開始され、システムがログインを受け入れるシステム状態を定義しますが、ローカルGUIは開始されません。これは、サーバーシステムの一般的なデフォルトのシステム状態であり、リモートサーバールームのラックマウント型ヘッドレスシステムである可能性があります。
graphical.target
default.target
のもう1つの可能なエイリアスです 。通常、これはmulti-user.target
のスーパーセットとして定義されます :multi-user.target
のすべてが含まれます さらに、ローカルGUIログインのアクティブ化も行います。つまり、古典的なSysVinitのランレベル5のようなものです。
WantedBy=multi-user.target
の行 サービスでの指定は、基本的にSysVinitシステムで「このサービスはランレベル3、4、および5で開始する必要があります」と指定するのと同じです。systemd
に通知します。 このサービスは、ローカルGUIがアクティブであるかどうかに関係なく、通常のシステム起動の一部として開始する必要があります。
ただし、WantedBy
は有効/無効状態とは別のものです。つまり、別の意味では、一種の「プリセット」です。自動開始が発生する可能性のある条件を決定しますが、最初にサービスが有効になっている場合に限ります。
2.)WantedBy=multi-user.target
を省略した場合 行と他の有効なサービスにはRequires=your.service
が含まれていません またはWants=your.service
サービス定義では、サービスは自動的に開始されません。
systemd
依存関係で動作し、起動時にRequires
またはWants
サービスが有効になっている場合でも、サービスは開始されません。
もちろん、default.target
を編集できます Requires
を追加または削除するには またはWants
起動時に開始したいサービスの行–ただし、新しいサービスファイルをシステムにドロップするだけで、デフォルトで機能させることができます(これにより、ソフトウェアパッケージマネージャーにとって非常に簡単になります)、systemd
> WantedBy
があります およびRequiredBy
Wants
を挿入するために使用できるキーワード およびRequires
-「もう一方の端」からの依存関係を(それぞれ)入力します。
3.)しない場合は、この行を省略してください。 起動時にサービスが自動的に開始されるようにしたいまたは このサービスは、明示的に定義した一連の依存関係の一部です。
たとえば、サーバーアプリケーションAをリファクタリングしていて、何らかの理由で一部のオプション機能を別のサービスBに分割して、ユーザーが不要な場合にインストールしないことを選択できるようにする場合があります。次に、サービスBを別のservice-B.rpm
にすることができます。 、およびB.service
を定義します WantedBy=A.service
を使用 systemd
を作成するには サービスAが開始されるたびに、サービスBを自動的に起動します。ただし、service-B.rpm
の場合のみです。 実際にインストールされています。
Wants
に注意してください またはWantedBy
システムは、別のサービスまたはターゲットも開始されるたびに1つのサービスを起動する必要があるとだけ述べていますが、起動/シャットダウンの順序については何も指定していません。サービスAの起動時にサービスBをすでに実行している必要がある場合は、Before=A.service
を追加する必要があります。 B.service
で 起動順序の依存関係を明示的に指定するファイル。
4.)いつでも 起動時にサービスを自動的に開始する機能が必要であり、他の依存関係はすでに定義されていません。