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

ほとんどのsystemdの例にWantedby=multi-user.targetが含まれているのはなぜですか?

multi-user.targetとは何か、およびmulti-user.targetが特別なターゲットであると述べているsystemdのドキュメントを読みました。さらに、systemdの例の多くにはその行が含まれています。

  1. なぜこれほど多くのサンプルサービスにその行が含まれているのですか?
  2. WantedBy =multi-user.targetが含まれていなかった場合はどうなりますか?
  3. サービスファイルの定義にその行を含めないことが実際に推奨される場合の例を教えてください。
  4. 同じ線に沿って、いつその線を維持するのが良い考えですか?

承認された回答:

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 -「もう一方の端」からの依存関係を(それぞれ)入力します。

関連:Ubuntu –systemdの「ソケットアクティベーション」とxinetd?

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.)いつでも 起動時にサービスを自動的に開始する機能が必要であり、他の依存関係はすでに定義されていません。


Linux
  1. LinuxでSystemdサービスを作成する方法

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

  3. Systemdが開始直後にサービスを停止するのはなぜですか?

  1. Systemdは/etc/ pm /…を読み取りますか?

  2. Linux での service コマンドの例

  3. Linux での chkconfig コマンドの例

  1. Linux での systemctl コマンドの例

  2. systemd - サービスに複数の引数を与える

  3. シャットダウン直前にsystemdでスクリプトを実行する方法は?