Hitachi

uCosminexus Batch Job Execution Server 使用の手引(Windows(R)用)


4.4.5 バッチジョブおよびジョブネットの強制終了

〈この項の構成〉

(1) 強制終了の方法

(a) JP1/AJSから直接バッチジョブを実行している場合

JP1/AJSの操作によって実行中のバッチジョブ実行システムのバッチジョブおよびジョブネットを強制終了できる。強制終了の指示を受けたジョブコントローラは,実行中のジョブステップのプロセスを強制終了する。また,強制終了の指示を受けたジョブネットは,新たなジョブを起動しなくなり,ジョブネット内の実行中のジョブすべてを強制終了する。この操作は,次に示すウィンドウまたはajskillコマンド,もしくはjpqjobcanコマンドで操作できる。

  • [デイリースケジュール(階層表示)]ウィンドウ

  • [JP1/AJS3 - View]ウィンドウ

  • [マンスリースケジュール]ウィンドウ

  • [ジョブネットモニタ]ウィンドウ

ウィンドウによる強制終了またはajskillコマンドの詳細については,JP1のマニュアルを参照のこと。

上記の操作で強制終了をした場合,JP1/AJSで確認できるジョブの状態は,「強制終了」となる。また,ジョブログを含むジョブコントローラの標準エラー出力の一部または全体が,JP1/AJSから参照できないおそれがある。このときジョブの実行結果を確認するには,スプール内のジョブログを参照すること。

(b) JP1/AJSから直接バッチジョブを実行していない場合,およびコマンドラインから起動している場合

ユーザが直接taskkillコマンドなどでバッチジョブを終了させる必要がある。このとき,bjexec.exeプロセスだけ終了させなければならない。bjexecsub.exeプロセスを終了させた場合,一時ファイルの削除や世代ファイルの更新などの後処理がされない。

bjexec.exeプロセスのプロセスIDはbjexlslockコマンドのPPIDの列に出力される。bjexlslockコマンドでbjexec.exeプロセスのプロセスIDを参照し,taskkillコマンドなどで終了させること。bjexlslockコマンドでプロセスIDを調べ,バッチジョブを強制終了する例を次に示す。

> bjexlslock
JOBID  STATUS ELAPSED  PID        PPID       JP1JobID   JOBNAME
------ ------ -------- ---------- ---------- ---------- --------------------
000907 LOCK   00:01:23       3188       3128 0000001270 SAMPLE
> taskkill /F /PID 3128

ただし,bjexlslockコマンドでbjexec.exeプロセスのプロセスIDが出力されるのは,排他/共用制御が適用されるDD要素が指定されているジョブだけである。詳細は「3.10 ジョブ単位のファイルおよびディレクトリに対する排他/ 共用制御機能」を参照のこと。

それ以外のジョブについては,OSの機能などを利用してプロセスIDを調べること。

バッチジョブのジョブログをファイルにリダイレクトしている場合,bjexec.exeプロセスをtaskkillコマンドなどで終了させると,バッチジョブのジョブログがファイルに最後まで出力されないことがある。Advanced Shellはデフォルトでジョブログをファイルにリダイレクトしているため,必要に応じてAdvanced Shellの出力モードの設定を変更すること。

また,JP1/AJSから強制終了した場合,バッチジョブの親プロセスによってはバッチジョブが終了され一時ファイルの削除や世代ファイルの更新などの後処理がされないことがある。例えば,batファイルは終了されたとき子プロセスに何もしないため,バッチジョブが終了されることはない。Advanced Shellは終了されたとき子プロセスを終了させるため,ジョブステッププロセスを含めバッチジョブを終了させられる。

JP1/AJSから直接バッチジョブを実行しない場合は注意が必要である。

(2) バッチジョブ実行システムがジョブステップのプロセスを終了させる方法

バッチジョブ実行システムは,次の方法でジョブステップのプロセスを強制終了する。

(a) EXEC要素のLANG属性がJavaの場合

cjkilljobコマンドを呼び出し,バッチアプリケーションを強制終了する。cjkilljobコマンドについては,マニュアル「Cosminexus アプリケーションサーバ V8 リファレンス コマンド編」を参照のこと。

(b) EXEC要素のLANG属性がJava以外の場合

ジョブステップのジョブオブジェクトに対してWin32(R) APIのTerminateJobObject関数を実行し,ジョブステップのプロセスを強制終了する。TerminateJobObject関数の仕様については,Windowsの資料を参照のこと。