首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对大型机作业的依赖

对大型机作业的依赖
EN

Stack Overflow用户
提问于 2009-11-23 02:00:44
回答 1查看 12.5K关注 0票数 1

我们有一个Autosys作业(让我们称之为job_a),它依赖于凌晨3点,并且还应该等待大型机作业的成功完成(在我们的例子中,job_m总是成功的)。Job_m通过主机上的OPC调度程序运行,该调度程序将作业完成与Autosys通信。它可以在凌晨2点到6点之间的任何时间运行。

我对Autosys工作方式的理解是,当job_m完成时,它会将一个条目写入其数据库中的表中,而当job_a检查其依赖项时,它会在该表中查看job_m的状态。该状态不会自动清除。因此,即使我们只对同一天运行的job_m感兴趣,但在第一次成功运行job_m之后,将始终满足作业依赖性。

第1天凌晨4点: job_m完成第1天4:01上午: job_a运行,因为第1天凌晨4点运行job_m是成功的第2天第3天: job_a运行,因为第1天凌晨4点运行job_m是成功的第2天第5天: job_m完成

我们目前建议的解决方法是有一个作业(job_c),它定期检查表,只有在过去6小时内更改了job_m的状态时才能完成。

第1天凌晨3点: job_c开始,在过去的6小时内看到job_m的状态没有任何变化: job_m完成了第1天4:01am: job_c完成了第1天4:02上午: job_a在job_c第2天凌晨3点结束后运行: job_c开始了,在过去的6小时内看到job_m的状态没有变化第2天5:01 5am: job_m完成第2天5:02 5am: job_a在job_c完成之后运行

是否有一个Autosys命令可用于重置表中job_m的状态?如果没有,是否有比上面概述的方法更好地强制执行这种依赖的方法?

EN

回答 1

Stack Overflow用户

发布于 2009-12-03 02:24:45

解决方案取决于您正在使用的Autosys版本。如果是R11 (最新版本),您可以将对job_a的回顾依赖设置为只有当job_c在X小时内运行到S时才能运行。

在早期版本中,您可以在job_a的S上运行一个作业,该作业将将job_c的状态更改为非活动状态。如果job_c是不活动的,则job_a将该启动条件视为FALSE,但job_c将在下次满足其启动条件时运行。

该命令为sendevent -E CHANGE_STATUS -s非活动-J job_c,该命令必须作为Autosys的超级用户帐户运行。您的Autosys管理员可能不允许这样做。此外,最佳实践是在Autosys事件处理器服务器上运行sendevent命令,这样如果您运行的是双服务器高可用性,并且系统转到单服务器模式,则sendevent命令在滚完之后才能工作。

示例

代码语言:javascript
复制
insert_job: job_a job_type: c
command: do_something
machine: machine1
owner: my_id@machine1
conditions: s(job_c)
date_condition: 1
start_time: 03:00

insert_job: job_c job_type: c
command: do_something_else
machine: machine1
owner: mainframe@machine1
comment: "This is the mainframe job"


insert_job: job_d job_type: c
command: sendevent -E CHANGE_STATUS -s INACTIVE -J job_c
owner: superuser@autosys_server
machine: autosys_server
conditions: s(job_a) and s(job_c)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1780761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档