【问题标题】:Autosys dependency on mainframe jobAutosys 对大型机作业的依赖
【发布时间】:2009-11-23 02:00:44
【问题描述】:

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

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

Day 1 4am: job_m completes
Day 1 4:01am: job_a runs, since Day 1 4am run of job_m was successful
Day 2 3am: job_a runs, since Day 1 4am run of job_m was successful
Day 2 5am: job_m completes

我们目前建议的解决方法是让一个作业 (job_c) 定期检查表,并且仅当 job_m 的状态在过去 6 小时内发生更改时才完成。

Day 1 3am: job_c starts, sees no status change for job_m within the last 6 hours
Day 1 4am: job_m completes
Day 1 4:01am: job_c completes
Day 1 4:02am: job_a runs following completion of job_c
Day 2 3am: job_c starts, sees no status change for job_m within the last 6 hours
Day 2 5am: job_m completes
Day 2 5:01am: job_c completes
Day 2 5:02am: job_a runs following completion of job_c

有没有Autosys命令可以用来重置表中job_m的状态?如果没有,是否有比上述方法更好的方法来执行这种依赖关系?

【问题讨论】:

    标签: scheduling autosys


    【解决方案1】:

    解决方案取决于您使用的 Autosys 版本。如果是R11最新版本,可以设置job_a的回溯依赖,只在job_c在X小时内跑到S时才运行。

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

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

    例子

    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)
    

    【讨论】:

    • 大型机作业不是在 Autosys 上调度的,而是由大型机上的 OPC 调度的,它将作业状态发送到 Autosys 中存储。因此,我们无法让 sendevent 正常工作(我们确实拥有适当的权限,因为它定期在 Autosys 计划的盒子上运行)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多