ジョブネットが異常終了または強制終了した場合に呼び出される出口プログラムについて説明します。
【Windows版】
ジョブネットが異常終了または強制終了したとき、jobschexitex.bat、jobschexitex.exeの順に出口プログラムが検索され、見つかれば呼び出されます。jobschexitex.batが見つかった場合、jobschexitex.exeが存在しても呼び出されません。
利用者がこれらの出口を利用して独自の処理を行いたい場合は、同名の出口プログラムを作成して、以下のディレクトリに格納してください。
Systemwalkerインストールディレクトリ\MpWalker.JM\bin |
【UNIX版】
ジョブネットが異常終了または強制終了したとき、jobschex.exitの出口プログラムが検索され、見つかった出口プログラムが呼び出されます。
利用者がこの出口を利用して、独自の処理を行いたい場合は、同名の出口プログラムを作成して、以下のディレクトリに格納してください。
Solaris/Linux版:
/opt/FJSVJOBSC/bin |
HP-UX版:
/opt/FHPJOBSCH/bin |
AIX版:
/usr/FAIXJOBSC/bin |
出口プログラムには、実行権が設定されている必要があります。実行権が設定されていないと呼び出されません。
ジョブネット異常終了拡張出口は、ジョブネット異常終了出口と異なり、ジョブ実行制御属性のジョブネットが異常終了した場合、出口プログラムに渡される終了コードはジョブ実行制御から返された値となります。
出口プログラムに渡されるパラメタ
argc : パラメタの数(20) |
一時ファイルには、ジョブネット内の個々のジョブについての情報が、以下のように格納されます。ジョブ名/終了コード/状態がジョブ1個分の情報です。
ジョブ名 |
上図の各情報について説明します。
実行属性によって、以下の内容が格納されます。
ジョブ名です。ジョブ名が省略されている場合は、コマンド名です。
ジョブのワークユニット名です。
ジョブのワークユニット名です。
コマンド名です。
ジョブの終了コードです。未実行のジョブの終了コードは0です。
ジョブ実行制御属性のジョブネットの場合、256以上になることもあります。
ジョブの状態を以下の7つのうちいずれかの文字列で表します。
正常終了したことを示します。
疑似正常終了したことを示します。
異常終了したことを示します。
強制終了したことを示します。
未実行であったことを示します。
停止状態であることを示します。
無効状態であることを示します。
一時ファイルは、以下のディレクトリに作成されます。
ジョブスケジューラのデータベースディレクトリ配下のworkディレクトリ。ファイル名はNEXnnn.tmp(nnnはシステムが付加)の形式で作成されます。
/var/tmpディレクトリ
/tmpディレクトリ
一時ファイルは、ジョブスケジューラ側では削除しないので、出口プログラムで削除する必要があります。
出口が登録されていない場合は、一時ファイルは作成されません。
パス状態のジョブについて
先行ジョブの終了コードによる後続ジョブの起動条件を指定している場合に、パス状態で終了したジョブは、以下のようになります。
ジョブの情報としては、パスされる以前のジョブの状態(実行待ち/無効状態/停止中)が渡ります。
終了コードは0になります。
また、OR条件で待ち合わせている場合に、後続ジョブのOR条件により強制終了されたジョブは、以下のようになります。
実際に起動されたかどうかに関わらず、ジョブの状態は強制終了(canceled)になります。
終了コードは248または249になります。
出口プログラム格納場所
Windows | Systemwalker Operation Managerインストールディレクトリ\MpWalker.JM\bin |
Solaris | /opt/FJSVJOBSC/bin |
HP-UX | /opt/FHPJOBSCH/bin |
AIX | /usr/FAIXJOBSC/bin |
Linux | /opt/FJSVJOBSC/bin |
注意事項
ジョブネットやグループの実行が遅延する可能性があるため、時間のかかる処理は行わないでください。
Windows版の場合、出口の実行ユーザは、ジョブスケジューラサービスのログオンアカウントです。【Windows版】
UNIX版の場合、出口の実行ユーザは、“root”となります。【UNIX版】
プログラム例
ジョブネット異常終了拡張出口のプログラム例を以下に示します。
Windows版の例
/* ジョブネット異常終了時に、"KANRI"サーバに以下のメッセージを送信する ジョブネット名(グループ名) is abended !! code = 終了コード*/ #include <stdio.h> #include <process.h> main(int argc, char *argv[]) { char cmdline[256]; sprintf_s(cmdline,sizeof(cmdline), "NET SEND KANRI %s(%s) is abended !! code = %s", argv[2], //ジョブネット名 argv[4], //グループ名 argv[5]); //終了コード system(cmdline); _unlink(argv[9]); // temp ファイルを削除 exit(0); }
Solaris版の例
/* コンソールに、ジョブネットが異常終了したというメッセージが グループ名、ジョブネット名および終了コードと共に出力される、 ジョブネット異常終了拡張出口のプログラム例(Solaris版) */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <syslog.h> main(int argc, char **argv) { openlog("jobsch", LOG_CONS, LOG_USER); syslog(LOG_WARNING, "WARNING: jobnet abnormal end. project=%s, group_name=%s, net_name=%s, net_comment=%s, net_code=%s", argv[1], argv[4], argv[2], argv[3], argv[5]); closelog(); unlink(argv[9]); exit(0); }