2012-07-06 5 views
1

Windows 서버 (배치 파일, java, perl, csharp 스크립트/응용 프로그램 혼합)에서 다양한 프로세스를 실행 중입니다. 이 프로세스는 Autosys를 사용하여 시작됩니다. Windows에서 autosys 에이전트는 항상 내가 'cmd를/C'와 함께 작업 정의에서 제공하는 명령을 접두사 그 자체로이 문제가되지 않습니다Autosys : KILLJOB 이벤트가 고아 프로세스를 벗어남

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

(아래 예 참조),하지만 난 보내 작업을 죽일 때 autosys KILLJOB 이벤트 (Autosys 설명서에 따라 프로세스에 kill 신호가 발생한 인터럽트가 전송 됨), foobar.exe가 종료되지 않고 부모 cmd.exe가 종료됩니다. foobar.exe는 고아 프로세스로 끝나며 수동으로 작업 관리자를 사용하여 종료하려면 서버에 로그인해야합니다.

autosys의 종료 신호가 실제 프로세스로 전달되도록 다른 사람이 솔루션을 가지고 있습니까?

감사합니다.

답변

1

Windows Autosys 작업을 처리 할 때 알려진 버그입니다. 이것은 Autosys R11 레퍼런스 매뉴얼에서 발췌 한 것입니다. 나는이 픽스를 사용해 본 적이 없다. 행운을 빕니다.

foobar.exe는 cmd.exe를 사용하지 않고 실행됩니까? KILLJOB 이벤트가 제대로 작동하는지 확인해 보겠습니다.

Windows는 프로세스 그룹 개념을 지원하지 않습니다. 실행 파일 ( .exe)을 실행하는 작업에 대해 KILLJOB 이벤트를 실행하면 KILLJOB은 명령 정의에 지정된 프로세스를 종료합니다. * .bat, * .cmd 또는 .com과 같은 * .exe가 아닌 다른 작업을 실행하는 작업에 대해 KILLJOB 이벤트를 실행하면 KILLJOB은 CA Workload Automation AE에서 사용한 CMD.EXE 프로세스 만 종료합니다 그 일을 시작합니다. 작업 상태는 종료 된 CMD.EXE 프로세스의 반환 코드에 따라 설정되며 다음 중 하나가 될 수 있습니다. SUCCESS, FAILURE 또는 TERMINATED. 사용자 응용 프로그램 또는 배치 ( .bat) 파일에 의해 시작된 프로세스는 종료되지 않습니다. 이 제한 사항을 해결하려면 Windows 시스템에서 실행중인 CA Workload Automation AE 작업 신호를 감시하도록 프로그램을 수정하고 SEND_SIGNAL 이벤트에이 매개 변수를 구현할 수 있습니다. *

+0

감사합니다. 문서에서 찾으십시오. 나는 foobar.exe에서 SEND_SIGNAL 이벤트 캡처를 시도하고 Autosys 에이전트가 프로세스를 종료 할 때 신호가 전달되지 않습니다. 이 문제를 해결하기 위해 부모 pid를 캡처하는 프로세스 래퍼 실행 파일을 작성하여 프로세스를 시작한 autosys 에이전트에 대한 핸들을 얻은 다음 하위 프로세스를 시작합니다. 프로세스 래퍼는 부모 pid가 종료 될 때까지 기다리고 감시하고, 모든 자식 프로세스를 정리하고 종료합니다. 이것은 지금까지 잘 작동하는 것 같습니다. –