NISMAILRUJE/NTまたはNISMAILRUJE/NT(x64)で、RUJEクライアントからの要求により、RUJEサーバ(RNServ.exe)がジョブ起動や
ファイル転送を行っている時に、RUJEサービス(rujed.exe)の再起動を行うと起動に失敗する場合があります。
RUJEサーバ(RNServ.exe)が処理中(ジョブ実行中や転送処理中)のプロセス構成は以下になります。
<runによりジョブ起動>
run →RUJEサービス(rujed.exe)‥‥常駐してクライアントからの要求待ち
└→RUJEサーバ(RNServ.exe) ‥‥要求受信毎に起動
└→ユーザバッチ(要求された数分のマルチ実行)
※RUJEサービス(rujed.exe)を停止すると、rujed.exeは終了しますが、
RUJEサーバ(RNServ.exe)はユーザバッチが処理を終了するまで
残ります。
<ftran,put,getによりファイル転送>
ftran →RUJEサービス(rujed.exe)‥‥常駐してクライアントからの要求待ち
put └→RUJEサーバ(RNServ.exe) ‥‥要求受信毎に起動
get ←file転送-┘ (要求された数分のマルチ実行)
※RUJEサービス(rujed.exe)を停止すると rujed.exe は終了しますが、
RUJEサーバ(RNServ.exe) はファイル転送が終了するまで残ります。
NISMAILRUJEは、Windows、UNIX、Linux、ACOS-4に対応したマルチプラットフォーム製品となっており、
UNIX、Linux、ACOS-4においては、クライアントからの要求をOS標準のinetdが受信し、inetdがRUJEサーバ(RLServer)を起動しています。
WindowsのOS標準には、inetdがないため、代替としてRUJEサービス(rujed.exe)を準備しています。
RUJEサービス(rujed.exe)は起動時にNISMAILRUJEの通信ポートで、クライアントからの接続待ちを行っており、
クライアントからの要求を受信するとRUJEサーバ(RNServ.exe)を起動します。
RUJEサービス(rujed.exe)を再起動するとき、RUJEサービス(rujed.exe)はRUJEサーバ(RNServ.exe)の終了を待たずに再起動処理を行います。
RUJEサービス(rujed.exe)がRUJEサーバ(RNServ.exe)を強制終了させることはありません。
このため、RUJEサービス(rujed.exe)の再起動中にRUJEサーバ(RNServ.exe)が処理中の場合は、RUJEサーバ(RNServ.exe)が
NISMAILRUJEの通信ポートを掴んだままとなっているので、起動中のRUJEサービス(rujed.exe)は通信ポートを取得できずに
起動が失敗となります。
RUJEサービス(rujed.exe)の再起動に失敗した場合は、以下のいずれかの手順で再起動を行ってください。
・RUJEサーバ(RNServ.exe)の処理終了を待った後で、RUJEサービス(rujed.exe)の起動を行います。
・RUJEサーバ(RNServ.exe)を終了させてから、RUJEサービス(rujed.exe)の起動を行います。
RUJEサービス(rujed.exe)の再起動をどちらの手順で行うかは、ご利用者様にてご判断ください。
【RUJEサーバ(RNServ.exe)の終了後にRUJEサービス(rujed.exe)の再起動が失敗する場合】
RUJEサーバ(RNServ.exe)終了後にRUJEサービス(rujed.exe)の再起動を行ったとき、RUJEサービス(rujed.exe)再起動が失敗することがあります。
多くの場合、RUJEサーバ(RNServ.exe)から起動された子プロセスが原因になります。
以下に、RUJEサーバ(RNServ.exe)がSAMPLE.batを実行する場合を例に説明します。
SAMPLE.batは内部でsample.exeを実行するものとします。
RUJEサーバ(RNServ.exe)がSAMPLE.batを起動した場合の起動プロセスの関係を示します。
RNServ.exe
→ cmd.exe(*) → SAMPLE.bat → sample.exe
(*)RNServ.exeはSAMPLE.batを実行するために、cmd.exeを起動します。
RUJEサーバ(RNServ.exe)を終了させても、cmd.exe/SAMPLE.bat/sample.exeのいずれかまたは全てが終了しないことがあります。
RUJEサービス(rujed.exe)からRUJEサーバ(RNServ.exe)に継承された通信ポートは、RUJEサーバ(RNServ.exe)が生成した
子プロセス(上記例でのcmd.exe/SAMPLE.bat/sample.exe)にも継承されます。
RUJEサーバ(RNServ.exe)が生成した子プロセス(上記例でのcmd.exe/SAMPLE.bat/sample.exe)が残存している場合は、子プロセスが
通信ポートを掴んだままとなるため、RUJEサービス(rujed.exe)は起動時に通信ポートを確保できずに起動に失敗します。
RUJEサービス(rujed.exe)の再起動のために、RUJEサーバ(RNServ.exe)を終了させる場合は、RUJEサーバ(RNServ.exe)の
子プロセスを確認し、残存している場合は子プロセスも終了させてください。
RUJEサーバ(RNServ.exe)と終了対象の子プロセスとの親子関係はtasklistコマンドなどで確認してください。
本件につきましては、制限事項とさせていただきます。
|