ジョブ実行中にシステムが停止した場合
ジョブが実行中に、システムダウンや停電(運用中の電源断を含む)などによりシステムが停止した場合のジョブの扱い(処理)について説明します。
基本的には、システムが停止した場合でも、投入されているジョブは消去されずに保証されます。
システム停止時のジョブの状態によって以下のように処理されます。
ジョブは保存され、ジョブ実行制御サービス/デーモンの再起動後に実行されます。
再実行するよう指定(注)してあるジョブは保存され、ジョブ実行制御サービス/デーモン再起動時にジョブの先頭から再実行されます。
再実行指定していないジョブは、そのキューイング情報が消去されるため、再実行はされません。ただし、ネットワークジョブまたは分散実行ジョブの実行サーバにおけるシステム停止の場合、停止時のジョブの状態や再実行指定の有無にかかわらず、実行サーバでそのキューイング情報が消去されるため、再実行されません。これは、ジョブが再実行される動作とした場合、リカバリ対処として投入サーバからジョブを再投入することにより、二重起動となってしまうのを防ぐためです。システム再起動後は、投入サーバからジョブを再投入するなどの対処を行ってください。
システム停止時にデマンドジョブを再実行させたい場合は、[ジョブ情報編集/投入]ダイアログボックス-[拡張情報]シートの[ジョブを再実行する]を指定します。
コマンドでデマンドジョブを実行する場合には、qsubコマンドの-nrオプションの指定の有無により、再実行の制御をすることができます。-nrオプションを指定することで、ジョブの再実行が禁止されます。-nrオプションを指定しない場合は、ジョブの再実行を許可する動作となるため注意が必要です。
qsubコマンドについては、“Systemwalker Operation Manager リファレンス集”を参照してください。
システムが停止した場合、キューイング情報が消去され、ジョブは再実行されません。これは、ジョブネットとしての処理が完結していないため、後続ジョブが再実行されるのを防ぐ目的です。システム再起動後は、ジョブネットの再起動など、ジョブネットに対するリカバリ操作のみを行ってください。
なお、ネットワークジョブまたは分散実行ジョブの実行サーバにおけるシステム停止の場合、デマンドジョブと同様、実行サーバでそのキューイング情報が消去されるため再実行はされません。
参考
ネットワークジョブおよび分散実行ジョブは、スケジュールサーバ(投入サーバ)におけるシステム停止の場合、実行を継続することができます。定義手順の詳細については、“Systemwalker Operation Manager 運用ガイド”の“スケジュールサーバシステムダウン時に業務を継続する”を参照してください。
また、クラスタシステムの場合、フェールオーバが発生したときにジョブを引き継ぐことができます。ジョブを引き継ぐための設定などの詳細については、“Systemwalker Operation Manager クラスタ適用ガイド”の“クラスタシステムで引き継がれる業務”を参照してください。
環境変数について
ジョブ実行制御は、ジョブを起動する前に、以下に示す環境変数に値を設定します。先行ジョブの種類や終了コードなどの違いにより後続ジョブの処理を変更したいような場合には、これらの環境変数の値を利用してください。Operation Managerを起動したときの環境変数も引き継ぎます。ただし、ネットワークジョブの場合、投入サーバ側の環境変数は引き継がれません。
サブシステム番号が格納されています。
クライアントホスト名が格納されます。[ジョブ情報編集/投入]ダイアログボックス/ウィンドウまたは、[ジョブ選択/投入]ウィンドウから投入された場合に設定されます。
ジョブ所有者名が格納されています。
ジョブコメントが格納されています。
実行ホスト名が格納されています。
ジョブ番号が格納されています。
ジョブ名が格納されています。
キュー名が格納されています。
ジョブ投入ディレクトリ名が格納されています。
ネットワークジョブや分散実行ジョブにおいて、入出力ファイルの転送を実施している場合、実行サーバ上で実行されるジョブプロセスの環境変数に実行サーバ上で送受信されるファイルが格納されているディレクトリが設定されます。
ネットワークジョブや分散実行ジョブにおいて、実行サーバ上で実行されるジョブプロセスの環境変数にスケジュールサーバのホスト名が設定されます。
ジョブ番号について
ジョブ番号は、1から99999の番号をサイクリックに使用します。
ジョブ実行制御で管理できるジョブの最大数は、99999です。