Autosys:KILLJOB事件离开了孤儿进程

时间:2012-07-06 14:04:46

标签: windows signal-handling autosys remote-process

我在Windows服务器上运行各种进程(混合使用批处理文件,java,perl,csharp脚本/应用程序)。这些流程使用Autosys启动。 Windows上的autosys代理总是在我的作业定义中提供的命令前缀为'cmd / c'(参见下面的示例)

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

这本身不是问题,但是当我尝试通过发送autosys KILLJOB事件来杀死作业时(根据Autosys文档发送一个中断后跟kill信号到进程),foobar.exe没有被杀死,它是被杀死的父cmd.exe。 foob​​ar.exe最终成为一个孤儿进程,然后我们需要登录到服务器以手动使用任务管理器终止它。

有没有人有任何解决方案,以便来自autosys的终止信号传播到实际进程?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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