私が読んでマルチユーザーターゲットとは何ですか?そしてシステム文書、これはmulti-user.targetが特別なターゲットであることを示します。さらに、多くのシステム例この行を含みます。
- なぜそんなに多くのサンプルサービスにこの行が含まれていますか?
- WantedBy = multi-user.targetが含まれていない場合はどうなりますか?
- サービスファイル定義にその行を含めないことが実際に推奨される場合の例を挙げてください。
- 同様に、いつこのラインを維持するのが良いですか?
ベストアンサー1
1.)multi-user.target
デフォルトでは、クラシックSysVinitランレベル3に最も似ていますsystemd
。systemd
システムが起動すると、systemd
システム状態を - で指定された状態と一致させる試みが行われます。これは通常またはのエイリアスですdefault.target
。graphical.target
multi-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
依存関係に対して機能し、起動時にサービスに何もない場合、サービスがアクティブになっても起動しませんRequires
。Wants
もちろん、起動時に開始したいサービスのdefault.target
追加、削除、Requires
または行を編集できますWants
。ただし、これにより、新しいサービスファイルをシステムに配置してデフォルトで動作させることができます(これはソフトウェアが非常に簡単になります)systemd
。WantedBy
RequiredBy
Wants
Requires
3.) 場合いいえ起動時にサービスが自動的に開始されるようにするにはまたはサービスは、明確に定義された依存関係チェーンの一部です。
たとえば、サーバーアプリケーションAをリファクタリングし、何らかの理由でユーザーが必要でない場合にインストールしないことを選択できるように、一部のオプション機能を別々のサービスBに分割することを決定できます。その後、サービスBを個別に作成し、サービスAが起動したときにサービスBが自動的に開始されるようにservice-B.rpm
定義できますB.service
。ただし、実際にインストールされている場合にのみ可能ですWantedBy=A.service
。systemd
service-B.rpm
あるいは、Wants
単にWantedBy
他のサービスまたはターゲットが起動したときにシステムが1つのサービスを開始する必要があることを意味しますが、開始/終了順序についてはまったく指定しません。サービスAの起動時にサービスBがすでに実行されている必要がある場合は、ファイルに追加してBefore=A.service
開始B.service
順序の依存関係を明示的に指定する必要があります。
4.) いつでもする起動時にサービスが自動的に開始され、他の依存関係が定義されていないことを願っています。