JP1/AJS3において、「15分間隔で毎日24時間、ずっと繰り返し実行させたい」という要件はよくあります。このとき、起動条件(.condition)に「実行間隔制御(15分)」のみを設定する実装が一般的です。
しかし、この設定のジョブネットに「保留」をかけたまま放置してしまうと、運用上非常に厄介な挙動(滞留・起動条件待ちの乱立)を引き起こす原因になります。
今回は、この時の挙動のメカニズムと、安全に監視を再開させるためのリカバリ手順を徹底解説します。
前提となる設定環境
今回の挙動は、以下の一般的なデフォルト設定を前提としています。
-
スケジュール: 毎日 00:00 〜 23:59
-
起動条件: 15分の実行間隔制御のみ
-
多重起動: 監視を開始する(デフォルト)
-
実行予定生成: 繰り越さずに滞留させる(デフォルト)
-
異常終了後の動作: ジョブネットの実行を開始する(デフォルト)
保留したまま次の15分が来るとどうなる?
結論から言うと、「保留されている間に到来した時間分だけ、起動条件待ち(キュー)が裏でどんどん積み重なり、保留解除した瞬間にジョブが連続実行される」という恐ろしい状態になります。
1. 「起動条件待ち」のものが複数乱立する
ジョブネットを「保留」にしたまま次の15分が到来すると、AJSは「前回の実行から15分経ったので、次の実行準備(起動条件クリア)」を判定します。しかし、保留されているためジョブは実行されません。 「多重起動:監視を開始する」かつ「繰り越さずに滞留させる」設定になっているため、AJSは容赦なく次の15分、さらに次の15分と、時間経過のたびに「起動条件待ち」のステータスを複数生成してしまいます。
2. 保留解除しても「起動条件待ち」は消えない
「あ、保留したままだった」と気づいて保留を解除しても、裏で積み上がってしまった複数の「起動条件待ち」は消えません。 そればかりか、保留解除するたびに、溜まっていた回数分だけジョブが次々と連続実行されてしまいます。5回分の15分が経過していたら、保留解除を5回行う必要があり、ジョブも5回走ることになります。
安全に停止・リカバリするための手順(10分以上の間隔向け)
この「起動条件待ちが乱立した状態」をリセットし、安全に元の15分間隔の監視に戻すための手順です。
ステップ1:監視の「強制終了」
溜まってしまった「起動条件待ち」を力技で解除するのではなく、現在の監視自体を一度止めます。
-
JP1/AJS3 Web Console またはビューアーを開きます。
-
対象ジョブネットの マンスリースケジュール を開きます。
-
下部ペイン内のリストで、ステータスが 「監視中」となっている一番先頭のもの を右クリックします。
-
「強制終了」 を選択します。
💡 何が起きる? これにより、現在積み重なっていた起動条件の監視がバッサリと止まり、その日(本日分)の実行予定が「終了」ステータスになります。そして、スケジュールは「次回開始時刻待ち」の状態へ遷移します。
ステップ2:実行登録の解除
-
対象ジョブネットを右クリックし、「登録解除」 を行います。
-
ステータスが「未登録」になったことを確認します。
ステップ3:即時再開のための「実行登録」
ここが一番のポイントです。普通に再登録するとスケジュールが狂います。
-
NGな登録方法: ここで「次回から」で実行登録してしまうと、再開されるのが翌日の00:00になってしまい、本日の残り時間が動きません。
-
正しい登録方法: すぐに15分間隔の監視を再開させたい場合は、必ず 「すぐに実行」 で実行登録を行います。
これを行うことで、現在の時刻を起点として、再び15分間隔での正常な監視・実行ループが復活します。
⚠️ 注意:間隔が「5分」など短い場合の罠
上記の方法は、実行間隔が15分など「ある程度長い場合」に有効です。 もし、実行間隔が 5分など極端に短いもの である場合(目安として10分を切るかどうか)、登録解除 ⇒ 実行登録の操作をしている間にも次の実行タイミングが来てしまい、AJSの内部制御が追いつかずに実行登録自体がうまく成功しない(再び監視強制終了のようになってしまう)ケースがあります。
短い間隔(5分等)でのリカバリの工夫
もし間隔が短すぎて「すぐに実行」での再登録が失敗する場合は、以下の運用回避を行います。
-
本来のジョブネットは、安全のために 「次回から(翌日00:00〜開始)」 予定で実行登録しておく(明日以降の自動運用を担保)。
-
本日残り分の時間帯だけをカバーする「別名(退避用)のジョブネット」を急遽作成し、それを本日中だけ稼働させる。
短いインターバルの実行間隔制御は、一瞬の操作遅れがスケジュール検知に干渉するため、別ジョブへの切り替えが最も安全です。
まとめ
JP1の起動条件における「実行間隔制御」は非常に便利ですが、「保留」との相性は最悪です。
-
保留すると、裏で回数分の「起動条件待ち」が溜まる
-
リカバリは「先頭の監視中を強制終了」⇒「登録解除」⇒「すぐに実行で再登録」
この仕組みとリカバリ手順を頭に入れておけば、万が一現場で保留トラブルが起きても冷静に対処できます。ぜひ運用の参考にしてください!
※AIリライト前の元記事
毎日00:00-:23:59で起動条件に15分の実行間隔制御のみが入っており、15分の繰り返し実行されているジョブがあるとします。
conditionの詳細はデフォルト設定で多重起動は「監視を開始する」滞留については「繰り越さずに滞留させる」異常終了後の動作はジョブネットの実行を開始する」とします。
実行され正常終了となった後、ジョブユニットを保留したまま、次の15分が来るとどうなるでしょうか。
起動条件待ちのものが複数できてしまいます。保留解除しても、複数の起動条件待ちのものは消えません。次の15分到来時に保留されていたものが到来分保留状態になるため、その回数分保留解除しなければならず、保留解除するたびにジョブが実行されてしまうことになります。
マンスリースケジュール⇒下部ペイン内「監視中」となっている一番先頭のものを右クリック→強制終了でジョブを停止できます。そうすると、監視が止まり、その日のものが終了して、次回開始時刻待ちとなるので、登録解除して未登録となったら、再開したい時に再び実行登録すればよいですが、この時に「次回から」で登録すると再開が翌日00:00になってしまうため、すぐに15分間隔の監視を再開させたければ、「すぐに実行」で登録します。
※上記方法を使っても間隔が5分とか短いものであると(10分を超えるかどうかで分かれる?)、登録解除⇒実行登録をしても監視強制終了となってしまい、実行登録がうなくいかない時があります。その時は明日以降は次回から予定で実行登録しておき、本日残り分を別ジョブネットで稼働させるなどの工夫が必要になります。
