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

这是处理 Windows Autosys 作业时的一个已知错误。这来自 Autosys R11 参考手册。我从未尝试过使用此修复程序。祝你好运。

foob​​ar.exe 会在不使用 cmd.exe 的情况下运行吗?我会尝试一下,看看 KILLJOB 事件是否正常工作。

Windows 不支持进程组的概念。当您为运行可执行文件 (.exe) 的作业发出 KILLJOB 事件时,KILLJOB 会终止命令定义中指定的进程。当您为运行非 *.exe 的作业(例如,*.bat、*.cmd 或 .com)的作业发出 KILLJOB 事件时,KILLJOB 仅终止 CA Workload Automation AE 用来执行的 CMD.EXE 进程启动工作。Job Status 是根据被终止的 CMD.EXE 进程的返回码设置的,可以是以下之一:SUCCESS、FAILURE 或 TERMINATED。由用户应用程序或批处理启动的进程(.bat) 文件不会被杀死。要解决此限制,您可以修改程序以观察来自在 Windows 计算机上运行的 CA Workload Automation AE 作业的信号,并且您可以为 SEND_SIGNAL 事件实施此参数。*

于 2012-07-19T19:37:22.703 回答