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
)、明らかに何もしません。