首页 > 解决方案 > 为什么执行 exe 的 Control M OS Job 会在执行过程中卡住?

问题描述

我有 ac# exe,它使用 sed 从远程 unix 服务器读取一些日志行。当我在我的 Windows 服务器甚至我的开发 PC 上多次运行这个 exe 时,它​​执行得很好。但是,当我最终尝试在 Control M 中将其作为循环操作系统作业运行时(有时在第一次执行时,似乎是随机发生的),它会卡住但不会引发异常或任何事情。

作业的命令运行一个 .bat 文件,并且循环配置为 0 分钟,暂停时间由带有 thread.sleep 的 exe 动态控制。

在搜索网络并从我工作场所的其他使用控件 M 的区域寻求推荐之后,到目前为止,我尝试将代理更改为使用 ctmwincfg 的本地用户,我还尝试将代理服务更改为同一用户(不得不扭转这一点一个代理停止正常工作),我也从直接在作业中执行我的 exe 更改为使用 .bat 文件。

我的主机组代理之一是 windows server 2016,另外 3 个是 windows server 2012

标签: c#windowscontrol-m

解决方案


我无法在控件 M 本身中找到解决方案,而是在 .exe 的代码中找到解决方案。我使用了一个任务,它允许程序在超时后终止卡住的方法,这反过来又允许控制 M 作业正常完成。

  var task = Task.Run(() => MyStuckMethod(arg));
        if (task.Wait(TimeSpan.FromSeconds(30)))
            return task.Result;
        else
            throw new Exception("Timed out");

或者,控制 M 中有一些解决方法,包括发送警报或创建喊叫,然后自动终止工作,但这对我的情况没有用。 BMC 社区中的示例


推荐阅读