反例の説明

反例の説明

私が読んでマルチユーザーターゲットとは何ですか?そしてシステム文書、これはmulti-user.targetが特別なターゲットであることを示します。さらに、多くのシステム例この行を含みます。

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

ベストアンサー1

1.)multi-user.targetデフォルトでは、クラシックSysVinitランレベル3に最も似ていますsystemdsystemdシステムが起動すると、systemdシステム状態を - で指定された状態と一致させる試みが行われます。これは通常またはのエイリアスですdefault.targetgraphical.targetmulti-user.target

multi-user.target通常、すべてのネットワークサービスが開始され、システムがログインを許可するがローカルGUIが起動しないシステム状態が定義されます。これは、リモートサーバールームのラックマウント型ヘッドレスシステムである可能性があるサーバーシステムの一般的な基本システム状態です。

graphical.targetはい、別の可能な別名ですdefault.target。通常、これは次の親セットとして定義されますmulti-user.target。これには、multi-user.target実行されたすべての操作とローカルGUIログインの有効化が含まれます。クラシックSysVinitのランレベル5に少し似ています。

このサービスの行は、SysVinitシステムで「このサービスは実行レベル3、4、5で開始する必要があります」を指定するのとWantedBy=multi-user.target本質的に同じです。systemdローカルサービスGUIがアクティブです。

ただし、WantedBy有効/無効状態とは別です。つまり、別の意味では「事前設定」です。自動起動が発生する可能性がある条件を決定しますが、サービスが初めて有効になっている場合にのみ適用されます。

2.) この行を省略し、アクティブなWantedBy=multi-user.target他のサービスにサービス定義にRequires=your.service含まれていない場合、Wants=your.serviceサービスは自動的に開始されません。

systemd依存関係に対して機能し、起動時にサービスに何もない場合、サービスがアクティブになっても起動しませんRequiresWants

もちろん、起動時に開始したいサービスのdefault.target追加、削除、Requiresまたは行を編集できますWants。ただし、これにより、新しいサービスファイルをシステムに配置してデフォルトで動作させることができます(これはソフトウェアが非常に簡単になります)systemdWantedByRequiredByWantsRequires

3.) 場合いいえ起動時にサービスが自動的に開始されるようにするにはまたはサービスは、明確に定義された依存関係チェーンの一部です。

たとえば、サーバーアプリケーションAをリファクタリングし、何らかの理由でユーザーが必要でない場合にインストールしないことを選択できるように、一部のオプション機能を別々のサービスBに分割することを決定できます。その後、サービスBを個別に作成し、サービスAが起動したときにサービスBが自動的に開始されるようにservice-B.rpm定義できますB.service。ただし、実際にインストールされている場合にのみ可能ですWantedBy=A.servicesystemdservice-B.rpm

あるいは、Wants単にWantedBy他のサービスまたはターゲットが起動したときにシステムが1つのサービスを開始する必要があることを意味しますが、開始/終了順序についてはまったく指定しません。サービスAの起動時にサービスBがすでに実行されている必要がある場合は、ファイルに追加してBefore=A.service開始B.service順序の依存関係を明示的に指定する必要があります。

4.) いつでもする起動時にサービスが自動的に開始され、他の依存関係が定義されていないことを願っています。

おすすめ記事