クリーンアップスクリプトを使用した長いシステムワンショットサービスの処理

クリーンアップスクリプトを使用した長いシステムワンショットサービスの処理

完了するのに長い時間(たとえば、数時間)か、短い時間がかかる可能性があるスクリプトを実行するsystemd.serviceがあり、スクリプトが完了したらクリーンアップスクリプトを呼び出す必要があります。私のsystemd.serviceファイルはType=oneshot

ユーザーはいつでもサービスを停止できますが、その後クリーンアップスクリプトを呼び出す必要があります。

起動スクリプトの実行中にサービスがアクティブと見なされることを望みます。

私は現在クリーンアップスクリプトを入れたのにうまくいくExecStopようです。しかし、時にはサービスが失敗することがわかり、起動スクリプトの持続時間が長くなる可能性があると思います。

誰かがsystemdを使用してこれを達成する方法を理解するのに役立ちますか?

答え1

次のコマンドに注意してください。実行が停止しました =サービスが初めて正常に開始された場合にのみ実行されます。サービスがまったく開始されていないか、起動に失敗した場合(例:ExecStart =、ExecStartPre =、またはExecStartPost =で指定されたコマンドが失敗したため)、呼び出されません(「-」プレフィックスが付いていません。上記を参照)。 ) またはタイムアウトしました。サービスが正しく開始されずに再び終了すると、ExecStopPost =と共にコマンドが呼び出されます。

実行が停止した後=

サービスが停止した後に実行する追加のコマンド。 [...]この設定は、サービスが正しく起動しない場合でも実行する必要があるクリーンアップ操作にお勧めします。

私の考えでは、あなたがそれを使用したいと思いますExecStopPost=

関連情報