whileループでPythonスクリプトを実行するサービスを作成しています。ただし、mongodが実行された後にのみ起動するにはスクリプトが必要です。誰もがWantedByにmulti-user.targetを置くのを見ましたが、mongodファイルと彼のWantedByがmulti-user.targetに設定されているのを見ました。それでは、スクリプトのWantedByをmongod.serviceに設定するだけで十分ですか、それともWantedByをmulti-user.targetに設定し、Afterをmongod.serviceに設定する必要がありますか?
ありがとう
答え1
必要なのは、サービス用のシステム単位ファイルを作成することです。このファイルで指定しますAfter=mongod.service
(サービスファイル名はディストリビューションによって異なる場合があります)。
Requires=multi-user.target
マルチユーザーランタイムに達した後にのみサービスが開始されることを確認してください。サービスの開始順序は定義されていないため、サービスは他のデバイス構成によっては前後mongod
にsystemctl start myservice
開始できます。mongod
Requires=mongod.service
あなたが望むものではありません:
この依存関係タイプは、このデバイスが実行されているときに他のデバイスを常にアクティブにする必要があるわけではありません。具体的には:失敗した条件チェック(ConditionPathExists =、ConditionPathIsSymbolicLink =、... - 以下を参照)は、Requires =依存関係を持つデバイスの起動操作が失敗しないようにします。さらに、一部のデバイスタイプはそれ自体で無効にすることができます(たとえば、サービスプロセスが完全に終了することを決定したり、ユーザーがデバイスのプラグを抜くことがあります)。これはRequires =依存関係を持つデバイスには伝播されません。 After= と共に BindsTo= 依存関係タイプを使用すると、他の特定のユニットもアクティブでない限り、そのユニットがアクティブにならないようにすることができます (下記参照)。
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html