システム単位の複数のExecStartPreオーバーライドファイル。 systemdは実行順序を保証しますか?

システム単位の複数のExecStartPreオーバーライドファイル。 systemdは実行順序を保証しますか?

複数のソースを見ると、override conf ファイルの ExecStartPre がデフォルトのサービスファイルの後に順次実行されるように見えます。

しかし、これはsystemd自体で保証されていますか?また、ExecStartPreが一種のnohupならどうなりますか?それとも長期間実行されるプロセスですか?

ベストアンサー1

バラよりman systemd.unit

ユニットファイルに加えて、foo.service「挿入」ディレクトリがあるかもしれません。foo.service.d/サフィックス " "を持つこのディレクトリ内のすべてのファイルは.conf英数字順にマージされ、デフォルトのデバイスファイル自体の後に解析されます。

そしてman systemd.service:

ExecStartPre=ExecStartPost=

のコマンドの前または後に実行される追加のコマンドExecStart=。構文は、複数のExecStart=コマンドラインが許可されている点を除いてforと同じです。このコマンドは順番に 1 つずつ実行されます。

[...]

ExecStartPre=長期実行プロセスの開始には使用できません。ExecStartPre=via viaというプロセスによって生成されたすべてのプロセスは、次のサービスプロセスを実行する前に終了します。

参考にしてくださいExecStartPre=ExecStart=またはExecStartPost=失敗(およびプレフィックス " -"がない場合は、上記を参照)またはサービスが完全に開始される前のタイムアウトで指定されたコマンドを実行し続け、ExecStopPost=コマンドをスキップします。ExecStop=[...]

だから:

しかし、これはsystemd自体で保証されていますか?

はい。

また、ExecStartPreが一種のnohupならどうなりますか?それとも長期間実行されるプロセスですか?

タイムアウトすると終了し、サービスは続行されますExecStopPost

おすすめ記事