デマンドジョブが終了した場合に呼び出される、出口プログラムについて説明します。
【Windows版】
mjesexit.bat、mjesexit.exeの順に出口プログラムが検索され、見つかった出口プログラムが呼び出されます。mjesexit.batが見つかった場合、mjesexit.exeが存在しても呼び出されません。
利用者がこれらの出口を利用して、独自の処理を行いたい場合は、同名の出口プログラムを作成して、以下のディレクトリに格納してください。
Systemwalkerインストールディレクトリ\ MpWalker.JM\bin |
【UNIX版】
mjes.job.exitの出口プログラムが検索され、見つかった出口プログラムが呼び出されます。
利用者がこれらの出口を利用して、独自の処理を行いたい場合は、同名の出口プログラムを作成して、以下のディレクトリに格納してください。
Solaris/Linux:
/opt/FJSVMJS/usr/lib/mjes |
HP-UX:
/opt/FHPMJS/usr/lib/mjes |
AIX:
/opt/FAIXMJS/usr/lib/mjes |
出口プログラムには、実行権が設定されている必要があります。実行権が設定されていないと呼び出されません。
出口プログラムに渡されるパラメタ
出口プログラムに渡されるパラメタは、以下のとおりです。
argc : パラメタの数(9) |
Systemwalker Operation Manager EEのパラメタです。SE版では必ず 0 が設定されます。
注意事項
UNIX版はジョブ所有者の権限でデマンドジョブ終了出口が呼び出されます。qsubコマンドにおいて、クライアントユーザ名を指定する-cuオプションの指定がなかった場合、qsubコマンドを起動したユーザがジョブ所有者です。Windows版はサービスの起動アカウントの権限でデマンドジョブ終了出口が呼び出されます。
出口プログラムは、新規プロセスとして起動され、その終了は待ち合わせません。本出口処理が終了しなくても、当該ジョブは終了したと見なされ、後続のキュー待ちジョブが順次起動されます。
本出口処理の実行結果異常に対して、Systemwalker Operation Managerにおいては、何も行いません。
何らかの理由によりデマンドジョブ終了出口が存在するのに呼び出せなかった場合、SYSLOG/イベントログにその旨のメッセージが出力されます。
プログラム例
デマンドジョブ終了出口のプログラム例を以下に示します。
Windows版の例
/*
ジョブの終了コードが"0"以外の場合に、"KANRI"サーバに以下の
メッセージを送信します。
ジョブ名 is ended !! code = 終了コード
*/
#include <stdio.h>
#include <string.h>
#include <process.h>
main(int argc, char *argv[])
{
char cmdline[256];
int job_code = 0;
job_code = atoi(argv[6]);
if (job_code != 0) {
sprintf_s(cmdline,sizeof(cmdline),
"NET SEND KANRI %s is ended !! code = %s",
argv[1], //ジョブ名
argv[6]); //終了コード
system(cmdline);
}
exit(0);
}Solaris版の例
/*
ジョブの終了コードが“0”以外の場合に、コンソールにメッセージを
出力します。出力する情報は、ジョブ名、ジョブ番号、およびジョブの
終了コードの3つです。
*/
#include <syslog.h>
#include <stdio.h>
main(int argc, char **argv)
{
int job_code = 0;
job_code = atoi(argv[6]);
if (job_code != 0) {
openlog("mjes.job.exit", LOG_CONS, LOG_USER);
syslog(LOG_WARNING, "WARNING: job end. job_name=%s, job_number=%s,
job_code=%s", argv[1], argv[2], argv[6]);
closelog();
}
exit(0);
}