サーバーのパッチ適用や定期メンテナンスでOSを再起動する際、JP1/AJS Manager上で動いているジョブネットがどう変化するかは、「どのモードでJP1を起動したか」によって決定します。
まずは、多くの場合デフォルト設定(標準動作)となっている「ウォームスタート」における個別の挙動から見ていきましょう。
🛑 【検証】OS再起動後のジョブのステータス(ウォームスタート時)
日常的な再起動の際、多くの現場で確認される代表的なジョブ状態の遷移は以下の通りです。
1. 「イベント受信監視中」のジョブ ➔ 継続!
OS再起動前にイベント受信を待っていたジョブは、再起動後も自動的に「監視中」のまま維持されます。裏で受信監視の仕組みが継続されるので安心です。
2. 「保留」しているジョブ ➔ 維持!
一時的に実行を止めていた「保留」ジョブは、OSを再起動しようが、JP1の関連サービスを片っ端から再起動しようが、保留状態がガッチリとキープされます。勝手に動き出すことはありません。
3. 「監視実行中」だったジョブ ➔ 「中断」または「繰り越し未実行」
OS停止時に監視実行中のジョブは「中断」「繰り越し未実行」になります。
⚙️ JP1/AJSの「3つの起動モード」による状態遷移まとめ
JP1/AJSの起動コマンド(jajs_spmd や ajsstart)にはオプションがあり、一時的または恒久的に動作モードを切り替えることができます。
Bash
# 起動コマンドの例(デフォルトは -warm)
/opt/jp1ajs2/bin/jajs_spmd -warm
この3つのモードによって、再起動前のジョブ状態がどう変化するかを表にまとめました。
| 再起動前の状態 | コールドスタート (-cold)
※いずれも再起動後は「未登録」となる |
ウォームスタート (-warm)
※稼働中のジョブは「中断」となる |
ホットスタート (-hot)
※再起動前の状態を引き継ぐ |
| 実行中 | ❌ 未登録(初期化) | 🛑 中断 / 状態不明 | ▶️ 実行中(状態を引き継ぐ) |
| 開始時刻待ち | ❌ 未登録(初期化) | ⏳ 開始時刻待ち | ⏳ 開始時刻待ち |
| 監視中 | ❌ 未登録(初期化) | 👁️ 監視中 | 👁️ 監視中 |
❄️ コールドスタート (-cold) とは?
スケジュール情報をすべて初期化して真っ新な状態で起動します。システム時刻を過去に戻した際や、ajslocaldate コマンドで日時を変更した際などに必須となります。
⚠️ 注意: コールドスタートを行うと過去の履歴が消えるため、トラブル時は事前に調査用ログ(履歴情報)を退避させておきましょう。また、ISAMデータベース利用時は、Viewのログオフやコマンド停止を徹底してアクセスを遮断しないと、エラー(
KAVS0218-E)で起動に失敗します。
ホット/ウォームスタート時のジョブの状態取得に関する注意
-Rオプション使用時に、ホット/ウォームスタート時にジョブの状態が取得できないと、強制的に「終了状態不明」に遷移し、実行終了となる場合があります。詳細は公式のJP1/AJS 設計・運用ガイドを参照のこと。
特に時刻変更後のコールドスタートと、ISAM環境でのクリーンな状態での起動は、運用ミスを防ぐために重要です。
❓ 疑問:サービス停止中に「開始時刻」が過ぎたらどうなる?
運用の現場でよくあるのが、「JP1が停止している間に、スケジュールされていた実行時間を過ぎてしまった!」というケースです。この状態でウォームスタートを実行するとどうなるでしょうか?
💡 結論:そのジョブネットは、サービス起動直後に即座に「実行中」となります。
具体的には以下のような動きをします。
-
即時実行(遅れを取り戻す)
本来の開始予定時刻を超過しているため、サービス起動と同時に実行が開始されます。
滞留の発生: 停止時間が長く、複数の実行予定(世代)がたまっている場合は、それらが順次、または多重実行の設定に従って一斉に起動します。 - 停止前に「実行中」だったジョブの扱い
状態不明(デフォルト): ウォームスタートの場合、サービス停止前に実行中だったジョブは、その終了結果を正しく検知できず「終了状態不明」などの状態になることがあります。
継続実行の例外: 「ホットスタート」とは異なり、停止中の実行継続を保証するものではありませんが、エージェント側で終了していた場合はその結果を反映しようと試みます。 - 監視中のジョブネット(起動条件付き)
監視再開: 「監視中」だったものは、起動後に再び「監視中」状態に戻り、条件成立を待ちます。
「滞留(たいりゅう)」の発生に注意
停止時間が数日間に及ぶなど長かった場合、その間に実行されるはずだった予定(世代)が溜まっています。起動と同時にそれらが順次、あるいは設定によっては多重で一斉起動するため、サーバーのCPUやメモリに瞬間的な高負荷がかかります。
🛠️ 大量実行による高負荷を避ける対策
もし起動直後にジョブが一斉に動き出すのを防ぎたい場合は、サービスを起動する前にあらかじめ該当ジョブを「実行中止」に設定しておくか、あるいは前述のコールドスタートを実行してスケジュール自体を一度きれいに初期化することを検討してください。
📝 まとめ
OS再起動時のJP1の挙動は、インフラ運用保守の設計書に必ず記載される重要事項です。
-
基本は「ウォームスタート」。監視や保留は維持されますが、実行中ジョブは中断します。
-
停止時間中にスケジュールを超過したジョブは、次回起動時に「即時実行」されて高負荷を生むリスクがあります。
-
メンテナンス時に時刻変更を行う場合は、必ず「コールドスタート」の作法(DBアクセス遮断など)を守る必要があります。
それぞれの特性をしっかり理解して、安全なサーバーメンテナンスを行えるように準備しておきましょう!
【参考】
環境設定パラメーター”SUPPRESS”の設定→実行開始する前、実行するかどうかの確認を追加可能→設定後、サービスが起動した時点ですべてのジョブネットやジョブが抑止状態になる→サービス起動時にジョブの実行を抑止する必要がない場合はコマンドで環境設定パラメーター”SUPPRESS”の値を”none”に戻す
