指定された開始日時に発生するcrontabイベントを取得します。

指定された開始日時に発生するcrontabイベントを取得します。

RPiプロジェクトでいくつかのコマンドをスケジュールするcrontabがあり、これらのコマンドがフラグの状態を切り替えるとします。ボックスの電源が切れて再起動することがあります。ボックスが引き続き機能する場合は、フラグの状態が正しい状態になることを願っています。

私の考え:
再起動時に作業があります。

  1. 最後に知られている週の日付を復元します(簡単です。ログエントリをファイルに保存でき、ファイルの日付は「最後に知られている週の日付」として指定されます)。
  2. 有効期限中に発生したイベントのリストを取得し、それを使用して新しい状態を計算するようにcrontabに要求します。
  3. 完了しました。いつものように作業してください:)

よりスマートな方法があるかどうか教えてください。そうでなければ、ポイント2をどのように達成できますか?

ベストアンサー1

cronイベントリストは提供されません。できることは、スクリプトを定期的に実行することです。スクリプトに次のことを行います。

  1. 構成ファイルの日付タイムスタンプをvar Xとして読み込みます。
  2. 所定のイベント間隔(60分など)だけXを増加させます。
  3. X < 現在の日時は残りのスクリプトを実行し、X を設定ファイルに書き込んで 2 を繰り返します。
  4. (ループで最小限の時間を待つ必要があるかもしれません)

これにより、コンピュータの実行中にエラーが発生しても、スクリプトは必要に応じてフラグを切り替えます。日付タイムスタンプファイルが間隔よりも古い場合、スクリプトは何もしないため、実行されるよりもはるかに頻繁にcronジョブから呼び出すことができます。これにより、再起動後の追いつきは、平均して間隔の半分後に発生する必要がなくなります。 (たとえば、5分ごとに実行するようにスクリプトをスケジュールします。)スクリプトが2回実行されるのを防ぐには、ロックを使用する必要があります(停電後に1つのスクリプトがそれを追いかけようとする場合)。

おすすめ記事