0

プログラムを 7 日ごとに 13 時間実行しようとすると、プログラムが停止し、タスクが終了します。ただし、その間にコンピューターの電源を切ることがありますが、タスクを再度開始するとタイマーが再開されるかどうか知っていますか?

例えば

タスクを開始して 5 時間実行したら、コンピューターの電源を切ります。

翌日、コンピューターの電源を入れると、タスクが開始され、8 時間実行されます

それから...

タスクは 13 時間に達したために終了しますか、それとも 13 時間に達するまで実行し続けますか?

コンピューターの電源を切るたびにタイマーを再開する方法はありますか、またはこれを行うプログラムを知っていますか

助けていただければ幸いです

4

1 に答える 1

0

ある程度は、コンピューターまたはモバイル デバイスが実行しているオペレーティング システムに依存します。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個ついたら完成。

これがどのように機能するか:

  1. Cron または init.d がメインのワーカー スレッドを起動します
  2. ワーカー スレッドは、できれば 14 個の「作業のチャンク」まで実行され、終了します。
  3. 毎週、他の cron タスクは、14 個のチャンクがあるかどうかを確認します。もしそうなら、それは成功した実行でした。それらを削除して、最初からやり直してください。そうでない場合は、ワーカー タスクを再起動します。
于 2013-05-26T14:51:16.277 に答える