[学习笔记]CA Autosys(2) — condition依赖条件

Dependent Jobs 具有依赖的作业

在Autosys中,作业(Job)可以取决于其他作业的完成结果。 具有依赖的作业和简单作业之间的唯一区别是它依赖于另一个或多个作业。

我们可以通过condition属性来指定作业依赖关系。我们还可以在作业的依赖关系中添加时间限制,即回看条件(look-back condition)。

更多关于condition属性的介绍,请移步官方文档

现在让我们来创建一个具有依赖关系的作业
JIL定义如下:

/ *** EOD_post *** /
insert_job: EOD_post
job_type: cmd
machine: prod
condition: s(EOD_watch)
command: $HOME/POST

以上我们定了一个名为EOD_POST的cmd作业,它的依赖关系为 s(EOD_watch), 即依赖于EOD_watch作业的成功。换句话说,只有EOD_watch这个作业的完成状态为success,EOD_POST才会被启动。

look-back condition 回看条件

我们还可以在作业的依赖关系中添加时间限制,即回看条件(look-back condition)。

在这里我们举个例子来加深对这个概念的理解。
例如我们有一个作业test_sample_04,其定义如下:

insert_job: test_sample_04
job_type: cmd
machine: localhost
command: sleep 10
condition: s(test_sample_01,12.00) AND f(test_sample_02,24.00) AND
s(test_sample_03)

只有condition中所有条件时满足时,命令作业test_sample_04才会被启动,即满足:

  • 最近一次运行的test_sample_01的完成状态为success, 且完成时间在过去12小时内。
  • 最近一次运行的test_sample_02的完成状态为failure, 且完成时间在过去24小时内。
    小时。
  • 最近一次运行test_sample_03为成功即可(对其结束时间没有限制,可以是任意时间)

回看条件的时间依赖的表示方法为 HH.MM (HH为小时数,MM为分钟数, 如上面例子中的s(test_sample_01,12.00)

look-back condition还有有一种特殊用法,condition : s(dep_job, 0),
让我们再举一个例子来加深理。
我们先定义一个cmd作业test_sample_05:

insert_job: test_sample_05
job_type: cmd
machine: localhost
command: sleep 10
condition: s(test_sample_04) 

它只要检测到test_sample_04完成并具有success状态就会启动。

然后我们更新它的condition依赖条件:

update_job: test_sample_05
condition: s(test_sample_04, 0) 

这里我们在condition中增加了回看条件依赖0,此时,autosys会先检测test_sample_05上一次的完成时间,比如昨天11点, 然后它会去检测test_sample_05所依赖的test_sample_04的完成时间,只有test_sample_04最后一次的完成时间在test_sample_05上一次的完成之间之后,新的test_sample_05才会被启动。
例如,上一次test_sample_05完成时间是11点,而最近一次test_sample_04的完成时间是昨天10点,则其条件不满足。再比如,最近一次test_sample_04的完成时间是昨天11点05分,晚于上一次test_sample_05完成时间(11点),则其条件满足,test_sample_05会被启动。
可以参考下表:

last run of test_sample_05(Dependent)last run of test_sample_04 (Dependency)condition
11:00 AM (yestoday) 10:55 AM (yestoday) Not satisfied ❌
11:00 AM (yestoday) 11:05 AM (yestoday) Satisfied ✅
原文地址:https://www.cnblogs.com/lestatzhang/p/10611343.html