1

Windowsサーバーでさまざまなプロセスを実行しています(バッチファイル、Java、Perl、CSharpスクリプト/アプリケーションの組み合わせ)。これらのプロセスは、Autosysを使用して起動されます。Windowsのautosysエージェントは、ジョブ定義で指定したコマンドの前に常に「cmd / c」を付けます(以下の例を参照)。

C:\Windows\system32\cmd.exe /C foobar.exe

これ自体は問題ではありませんが、autosys KILLJOBイベントを送信してジョブを強制終了しようとすると(Autosysのドキュメントに従って、プロセスに割り込みとそれに続く強制終了シグナルが送信されます)、foobar.exeは強制終了されません。強制終了される親cmd.exe。foob​​ar.exeは孤立したプロセスとして終了し、タスクマネージャーを使用してサーバーを手動で終了するには、サーバーにログインする必要があります。

autosysからの終了シグナルが実際のプロセスに伝播するようにするための解決策はありますか?

ありがとう。

4

1 に答える 1

1

これは、WindowsAutosysジョブを処理する際の既知のバグです。これは、AutosysR11リファレンスマニュアルからのものです。私はこの修正を使用しようとしたことがありません。幸運を。

foob​​ar.exeはcmd.exeを使用せずに実行されますか?それを試して、KILLJOBイベントが正しく機能するかどうかを確認します。

Windowsは、プロセスグループの概念をサポートしていません。実行可能ファイル(.exe)を実行するジョブに対してKILLJOBイベントを発行すると、KILLJOBはコマンド定義で指定されたプロセスを強制終了します。* .exe以外のもの(たとえば、*。bat、*。cmd、または.com)を実行するジョブに対してKILLJOBイベントを発行すると、KILLJOBは、CA WorkloadAutomationAEが使用していたCMD.EXEプロセスのみを終了します。ジョブを起動します。ジョブステータスは、強制終了されたCMD.EXEプロセスのリターンコードに従って設定され、SUCCESS、FAILURE、またはTERMINATEDのいずれかになります。ユーザーアプリケーションまたはバッチによって起動されたプロセス(.bat)ファイルは強制終了されません。この制限を回避するために、Windowsマシンで実行されているCA Workload Automation AEジョブからのシグナルを監視するようにプログラムを変更し、SEND_SIGNALイベントにこのパラメーターを実装できます。*

于 2012-07-19T19:37:22.703 に答える