10.2.1 ジョブ実行ログ
ジョブ実行ログとは,バッチジョブの実行結果を通知する利用者向けのログ情報のことです。このログ情報は,JP1/AJS - Viewなどによって確認できます。
ジョブ実行ログには,次の情報が出力されます。
- バッチジョブの開始・終了メッセージ
- ジョブステップの開始・終了メッセージ
- ジョブ定義スクリプトの内容
- 実行したコマンドの結果
- 準備したファイルの状況,後処理の結果
- ユーザープログラムの標準出力(stdout)【Windows,Linux限定】※
- ユーザープログラムの標準エラー出力(stderr)
- カバレージ取得に関するメッセージ
- 注※
- adshexecコマンドの-sオプション,および環境ファイルのOUTPUT_STDOUTパラメーターにSPOOLを指定した場合だけ出力されます。
JP1/AJSを使用しない場合は,環境ファイルのSPOOL_DIRパラメーターに指定したスプールディレクトリ中の,バッチジョブごとのディレクトリに格納されているJOBLOGファイルを参照してください。
- <この項の構成>
- (1) ジョブ実行ログの出力内容
- (2) ジョブ実行ログの出力例
- (3) 子孫ジョブが異常終了した場合の注意事項
(1) ジョブ実行ログの出力内容
ジョブ実行ログの出力内容は,実行したジョブによって次のように異なります。
- ルートジョブ
- 標準出力は,adshexecコマンドの-sオプションおよび環境ファイルのOUTPUT_STDOUTパラメーターの指定に従って出力されます。
- 標準エラー出力は,スプール内のファイルに出力されます。
- ジョブごとにスプールジョブディレクトリが作成されます。
- ジョブ実行後,ジョブ実行ログの内容が標準エラー出力に出力されます。
- 子孫ジョブ
- 標準出力および標準エラー出力は,スプール内のファイルには出力されません。プロセス起動時の出力先に出力されます。
- ジョブ実行後,スプールジョブディレクトリ,およびスプールジョブディレクトリ内に割り当てたプログラム出力データファイルが削除されます。
- ジョブ実行後,JOBLOGの内容が標準エラー出力に出力されます。その他のジョブ実行ログの情報は出力されません。また,次に示す情報は出力されません。
・KNAX6380-IおよびKNAX7999-Iメッセージ
・JOBLOGの次に示すヘッダ行
---------------------------------------------------------------
JP1/Advanced Shell バージョン番号
[Information]
Jobid : ジョブ識別子
Spool Directory : スプールジョブディレクトリパス
Date : 実行日付
Configure File : 環境ファイルパス
HostName : ホスト名
[JP1 Parameter]
JP1/AJSから渡された環境変数
---------------------------------------------------------------
******** JP1/Advanced Shell MESSAGE ******** |
(2) ジョブ実行ログの出力例
ジョブの定義例と,そのジョブの実行後に標準エラー出力へ出力されるジョブ実行ログの例を次に示します。
- 例1(ch1.shとch2.shを定義)
![[図データ]](figure/zu100600.gif)
この場合に標準エラー出力へ出力されるルートジョブのジョブ実行ログの内容,およびその中で子孫ジョブの実行結果が出力される個所を次に示します。
![[図データ]](figure/zu100700.gif)
この場合に標準エラー出力へ出力されるジョブ実行ログの内容の具体例を次に示します。
![[図データ]](figure/zu101000.gif)
![[図データ]](figure/zu101100.gif)
- 例2(child1.sh,child2.sh,grandchild.shを定義)
![[図データ]](figure/zu100800.gif)
この場合に標準エラー出力へ出力されるルートジョブのジョブ実行ログの内容,およびその中で子孫ジョブの実行結果が出力される個所を次に示します。
![[図データ]](figure/zu100900.gif)
この場合に標準エラー出力へ出力されるジョブ実行ログの内容の具体例を次に示します。
![[図データ]](figure/zu101200.gif)
![[図データ]](figure/zu101300.gif)
(3) 子孫ジョブが異常終了した場合の注意事項
子孫ジョブからさらに実行する子孫ジョブがある場合,中間のジョブがUNIXのSIGKILLやWindowsのTerminateProcessで即時終了すると,ルートジョブがすべての子孫ジョブの完了を待たないで終了することがあります。そのため,このような即時終了操作は実行しないでください。もし,この現象が発生した場合は,関連するルートジョブや子孫ジョブの実行結果を調査してください。
なお,即時終了したジョブ以外のすべての子孫ジョブは,スプールジョブディレクトリが削除に失敗して残っているか,削除されていてもJOBLOGの内容が標準エラー出力へ出力されているため,ログは失われません。
- (例)
- 次のように,子孫ジョブからさらに子孫ジョブを実行するケースについて説明します。「→」は,ジョブが呼び出しによって実行されることを示します。
[ルートジョブ]→[子孫ジョブ(子)]→[子孫ジョブ(孫)] |
- このとき[子孫ジョブ(子)]が即時終了すると,[子孫ジョブ(孫)]より[ルートジョブ]が先に終了する場合があります。この場合の各ジョブの動作と,スプールジョブディレクトリの状態を次に示します。
項目 | ジョブの種類 |
---|
ルートジョブ | 子孫ジョブ(子) | 子孫ジョブ(孫) |
---|
ジョブの動作 | 子孫ジョブ(子)がエラー終了したものとして動作します。 ユーザープログラムがエラーで即時終了した場合と同じ動作となります。 | 即時終了します。 | ジョブは通常どおり終了します。 ただし,Windowsでは,ほかの関連するジョブの状態によっては強制終了として動作することがあります。 |
スプールジョブディレクトリの状態 | Windowsで子孫ジョブ(孫)がジョブ実行ログをまだオープンしている場合,スプールジョブディレクトリのリネームに失敗します。 上記以外の場合およびUNIXの場合,スプールジョブディレクトリは通常どおりリネームされます。 | 削除されないで残ります。 | ルートジョブがスプールジョブディレクトリのリネームに成功している場合,スプールジョブディレクトリはリネームに失敗します。 上記以外の場合,通常どおりJOBLOGの内容をstderrに出力して削除されます。 |