ある程度は、コンピューターまたはモバイル デバイスが実行しているオペレーティング システムに依存します。Windows 2000 以降または UNIX の派生物 (Linux、BSD、OSX) を実行している場合は、cron などのツールを使用して作業を開始できます。モバイル デバイスの場合は、もう少し作業が必要です。
起動する Windows または UNIX デバイスがあると仮定します。したがって、開始時に開始する OS の Startup/init.d レイヤーがあります。これは、電源投入時に物事を開始するためだけに使用されます。たとえば、ログイン/起動時に起動するシェル スクリプト/WSH スクリプトを作成する場合があります。この時点で実行中ですが、もう少しやりたいことがあります。
システムがアプリを起動できるようになったため、システムが再起動されていなくても、アプリが実行され続け、必要に応じて再起動されるようにする必要があります。たとえば、他のイベントによって強制終了/終了される可能性があります。私たちの目標は、システムの起動時にスクリプトを開始し、7 時間実行できるようにすることです。UNIX/Linux の場合:
これは、次の 2 つのタスクで実行できます。
- 1 つのタスクで、少なくとも 7 日ごとに実行されていることが保証されます
- もう 1 つのタスクは、実行時に 7 時間以上実行しないことを保証します。
最初のタスクは、1 組の cron スクリプトです。1本は30分ごとに走ります。唯一のタスクは、メインのワーカー タスクが実行中または終了していることを確認することです。終了しておらず、何らかの理由で実行されていない場合は、開始します。2 番目の cron タスクは 7 日ごとに実行され、実行時にワーカー タスクからマーカーをクリーンアップします。
メインのワーカー タスクを実行すると、ワークロードが 30 分のセグメントに分割されます。各セグメントを実行し、「ブレッドクラム」を一時ストレージのどこかに残します。基本的には、「あと 30 分の作業が完了しました」と表示されます。パン粉が14個ついたら完成。
これがどのように機能するか:
- Cron または init.d がメインのワーカー スレッドを起動します
- ワーカー スレッドは、できれば 14 個の「作業のチャンク」まで実行され、終了します。
- 毎週、他の cron タスクは、14 個のチャンクがあるかどうかを確認します。もしそうなら、それは成功した実行でした。それらを削除して、最初からやり直してください。そうでない場合は、ワーカー タスクを再起動します。