为什么执行 exe 的 Control M OS 作业在执行过程中卡住?
why Control M OS Job that executes an exe gets stuck mid execution?
我有一个 c# exe,它使用 sed 从远程 unix 服务器读取一些日志行。当我在我的 windows 服务器甚至我的开发电脑上多次 运行 这个 exe 时,它执行得很好。但是,当我最终尝试 运行 它作为 Control M 中的循环 OS 作业时(有时在第一次执行时,似乎是随机发生的)它被卡住了但不会抛出异常或任何东西.
job的命令运行是一个.bat文件,循环配置为0分钟,暂停时间由exe动态控制thread.sleep。
在网上搜索并从我工作场所的其他使用控件 M 的区域寻求建议后,到目前为止,我尝试将我的代理更改为使用 ctmwincfg 的本地用户,我还尝试将代理服务更改为同一用户(由于代理停止正常工作,不得不扭转这个),我也从直接在作业上执行我的 exe 改为使用 .bat 文件。
我的主机组代理之一是 windows 服务器 2016,另外 3 个是 windows 服务器 2012
我无法在控件 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 中有一些解决方法,包括发送警报或创建喊叫,然后自动终止作业,但这对我的情况没有用。
Example in BMC communities
我有一个 c# exe,它使用 sed 从远程 unix 服务器读取一些日志行。当我在我的 windows 服务器甚至我的开发电脑上多次 运行 这个 exe 时,它执行得很好。但是,当我最终尝试 运行 它作为 Control M 中的循环 OS 作业时(有时在第一次执行时,似乎是随机发生的)它被卡住了但不会抛出异常或任何东西.
job的命令运行是一个.bat文件,循环配置为0分钟,暂停时间由exe动态控制thread.sleep。
在网上搜索并从我工作场所的其他使用控件 M 的区域寻求建议后,到目前为止,我尝试将我的代理更改为使用 ctmwincfg 的本地用户,我还尝试将代理服务更改为同一用户(由于代理停止正常工作,不得不扭转这个),我也从直接在作业上执行我的 exe 改为使用 .bat 文件。
我的主机组代理之一是 windows 服务器 2016,另外 3 个是 windows 服务器 2012
我无法在控件 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 中有一些解决方法,包括发送警报或创建喊叫,然后自动终止作业,但这对我的情况没有用。 Example in BMC communities