プロセスがまだ完了していない場合、システムタイマーデバイスは次の実行をスキップしますか?

プロセスがまだ完了していない場合、システムタイマーデバイスは次の実行をスキップしますか?

systemdを使用して5分ごとにコマンドを実行したいと思います。ただし、ジョブの実行時間が5分を超える可能性があります。その時点で、systemdはコマンドの2番目のインスタンスを起動しますか?つまり、2つのプロセスを実行しますか?

最初のプロセスがまだ完了していない場合は、systemdに2番目のプロセスを開始しないように指示できますか?そうでなければ、良い解決策は何ですか?

注:「これはデフォルトの動作です。文書化されていません」と答えたいと思います。それでは、誰かが文書にバグを報告する方法を教えてもらえますか?

注:Cronにも同様の問題があります。https://unix.stackexchange.com/a/173928/11244。私はsystemdと同等のものを探しています。

ベストアンサー1

これが基本(唯一の)動作です。明示的に文書化されていませんが、systemdのオペレーションロジックによって暗示されます。

systemd.timer(5)内容は次のとおりです。

各タイマーファイルには、その単位を記述する一致する単位ファイルが必要です。タイマーの有効期限が切れると有効

システム(1)次に、単位状態の概念とその間の遷移について説明する。

デバイスは、「アクティブ」(開始済み、バインド済み、接続済み...を意味し、デバイスの種類に応じて以下を参照)または「非アクティブ」(停止済み、バインド解除済み、接続解除済み...を意味)のいずれかです。有効または無効中つまり、2つの状態の間(これらの状態を「アクティブ化」と「非アクティブ化」と呼びます)です。

これにより、タイマーの動作により、一致するデバイスが「アクティブ」になります。つまり、「アクティブ」状態に切り替わります。

一致するユニットが「アクティブ」になっていてすでに「アクティブ」である場合(サービスユニットの場合、これはサービスユニットに存在しない場合は「Type=oneshotメインプロセスがまだ実行中」であることを意味しますRemainAfterExit=true)、明らかに何もしません。

おすすめ記事