Windowsの定期タスクが重なる:前回が終わらないときの四つの選択
前回のタスクが動いたまま次の予定時刻になったら、起動回数を増やす前に重ね方を決めます。Windowsには並列、順番待ち、新規を開始しない、前回を止めるという別の方針があります。各回の成果が必要か、古い処理を中断できるかで選びます。
公式資料確認日:。
始まらなかった原因を、ログオンと重なりに分ける
タスクが前回から継続しているなら、次の起動要求をどう扱う設定かを見ます。実行ユーザーやログオン方式が合わない場合とは別です。既存タスクの設定や公開できる範囲のXMLを読み、MultipleInstancesPolicyの値を照合します。秘密を含む設定は共有しません。
公式XML仕様の既定値はIgnoreNewです。ただし既存タスクの作成方法や変更履歴を無視して、すべてその値だとは決めません。今のタスクがどの方針なのか、予定時刻・前回の終了・次回の開始を並べて確認します。
四つの方針は、どの困りごとを残すかで選ぶ
左の動きはMicrosoftの公式仕様です。右の判断は、その動きを業務へ当てはめるSelparoの設計案です。設定を選んだだけで、成果や二重処理まで正しくなるとは判断しません。
| 方針 | 前回が動いているときの仕様 | 選ぶ前に決めること |
|---|---|---|
| Parallel | 新しい実行を開始する | 同じ入力・保存先へ同時に触れても競合しないか |
| Queue | ほかの実行が終わってから新しい実行を開始する | 遅れた各回を処理する必要と成果期限 |
| IgnoreNew | 新しい実行を開始しない | 開始しない回があってもよいか |
| StopExisting | 既存の実行を止めてから新しい実行を開始する | 中断までに生じた変更と未完了をどう扱うか |
各回が必要なら、順番待ちでも対象日を失わない
毎回の確定データを受け取る処理と、最新の状態だけを見たい処理では、開始しない回の意味が違います。前者でIgnoreNewを選ぶなら、処理されなかった対象を後で拾う方法が別に必要です。Queueも、遅れた開始が成果期限に間に合うことまでは保証しません。
たとえば前日分の集計が遅れて翌朝に始まる場合、実開始時刻から対象日を作り直すと、意図した日を処理できない設計になり得ます。これは想定例です。予定対象日と実際の成果を対応づけて記録し、開始要求の順番だけを完了の証拠にしません。
途中で止めても、書き込んだものは別に残る
StopExistingは前回を止める方針で、すでに保存した内容や外部へ送った処理を巻き戻す機能としては選びません。中断した処理の結果が分からないなら、次回で同じ書込みを再送する前に照合します。Parallelでは、同じ保存先や対象キーに二つの実行が触れる条件を先に扱います。
同じタスクの開始方針を決めても、別名のタスクや手動実行が同じ業務操作を行う可能性は残ります。二重登録を防ぐ設計と、スケジューラの重なり方は別々に必要です。
変更は、本番送信をしない小さな試験で確かめる
本番タスクをわざと止めず、許可された別の試験用タスクと非機密の入力で確認します。前回が終了する前に次の予定が来る条件を作り、何が開始・待機・未開始・中断になったかを記録します。Selparoがその試験を実行した結果ではありません。
- 予定時刻と対象期間を記録し、実開始時刻と混ぜない。
- 前回と次回の実行を区別できる記録を残す。
- 成果の対象、保存先、受入結果を照合する。
- 待機や未開始が成果期限を超えた場合の担当を決める。
- 中断の結果が不明なら、自動再送ではなく照合へ止める。
速いPCを買う前に、必要な起動回数を決める
最新状態だけでよいなら、毎回を並列に増やす理由はありません。各回の成果が必要で常に待機が積み上がるなら、処理の範囲・周期・期限と実際の負荷を見直します。負荷を測らずRAMやVPSを増やす結論には進みません。実行場所を移しても、待ち方と中断の判断は残ります。
公式資料と、判断例の境界
仕様の根拠は以下の公式資料です。本文の記入例は実測値ではありません。購入・設定変更時は、対象の型番・版・契約条件を照合します。
- Microsoft:Task Schedulerの複数実行方針
Parallel・Queue・IgnoreNew・StopExistingの開始/待機/未開始/停止を区別。副作用の受入や巻き戻しを保証するenumではありません。
- Microsoft:MultipleInstancesPolicyのXML設定と既定値
XML設定の4値と既定IgnoreNewを確認。既存タスクが現在その値であるとの実機証拠ではありません。