RPiプロジェクトでいくつかのコマンドをスケジュールするcrontabがあり、これらのコマンドがフラグの状態を切り替えるとします。ボックスの電源が切れて再起動することがあります。ボックスが引き続き機能する場合は、フラグの状態が正しい状態になることを願っています。
私の考え:
再起動時に作業があります。
- 最後に知られている週の日付を復元します(簡単です。ログエントリをファイルに保存でき、ファイルの日付は「最後に知られている週の日付」として指定されます)。
- 有効期限中に発生したイベントのリストを取得し、それを使用して新しい状態を計算するようにcrontabに要求します。
- 完了しました。いつものように作業してください:)
よりスマートな方法があるかどうか教えてください。そうでなければ、ポイント2をどのように達成できますか?
ベストアンサー1
cron
イベントリストは提供されません。できることは、スクリプトを定期的に実行することです。スクリプトに次のことを行います。
- 構成ファイルの日付タイムスタンプをvar Xとして読み込みます。
- 所定のイベント間隔(60分など)だけXを増加させます。
- X < 現在の日時は残りのスクリプトを実行し、X を設定ファイルに書き込んで 2 を繰り返します。
- (ループで最小限の時間を待つ必要があるかもしれません)
これにより、コンピュータの実行中にエラーが発生しても、スクリプトは必要に応じてフラグを切り替えます。日付タイムスタンプファイルが間隔よりも古い場合、スクリプトは何もしないため、実行されるよりもはるかに頻繁にcronジョブから呼び出すことができます。これにより、再起動後の追いつきは、平均して間隔の半分後に発生する必要がなくなります。 (たとえば、5分ごとに実行するようにスクリプトをスケジュールします。)スクリプトが2回実行されるのを防ぐには、ロックを使用する必要があります(停電後に1つのスクリプトがそれを追いかけようとする場合)。