完了するのに長い時間(たとえば、数時間)か、短い時間がかかる可能性があるスクリプトを実行するsystemd.serviceがあり、スクリプトが完了したらクリーンアップスクリプトを呼び出す必要があります。私のsystemd.serviceファイルはType=oneshot
。
ユーザーはいつでもサービスを停止できますが、その後クリーンアップスクリプトを呼び出す必要があります。
起動スクリプトの実行中にサービスがアクティブと見なされることを望みます。
私は現在クリーンアップスクリプトを入れたのにうまくいくExecStop
ようです。しかし、時にはサービスが失敗することがわかり、起動スクリプトの持続時間が長くなる可能性があると思います。
誰かがsystemdを使用してこれを達成する方法を理解するのに役立ちますか?
答え1
次のコマンドに注意してください。実行が停止しました =サービスが初めて正常に開始された場合にのみ実行されます。サービスがまったく開始されていないか、起動に失敗した場合(例:ExecStart =、ExecStartPre =、またはExecStartPost =で指定されたコマンドが失敗したため)、呼び出されません(「-」プレフィックスが付いていません。上記を参照)。 ) またはタイムアウトしました。サービスが正しく開始されずに再び終了すると、ExecStopPost =と共にコマンドが呼び出されます。
サービスが停止した後に実行する追加のコマンド。 [...]この設定は、サービスが正しく起動しない場合でも実行する必要があるクリーンアップ操作にお勧めします。
私の考えでは、あなたがそれを使用したいと思いますExecStopPost=
。