在尝试找出以下方案的解决方案后,我正在接触中小企业。 我有一个非常具体的要求:
1)假设我有一个名为SCH1的日程表,有3个作业JOB1,JOB2和JOB3,如:
Schedule S1
JOB1
JOB2
FOLLOWS JOB1
JOB3
FOLLOWS JOB2
END
2)JOB1正在调用shell脚本。 3)现在,如果JOB1 shell脚本返回代码0 - 它成功并执行JOB2和JOB3。 4)如果shell脚本返回的代码不是0,那么JOB1不应该异常终止;但应跳过所有其他工作JOB2和JOB3(或不运行完成);和时间表应该标记成功。
我在网上得到以下链接,这表明这应该是可能的。但是,当我参考作业/计划定义的语法时;我无法弄清楚应该怎么写。
在作业语法中,看起来下面可以做到这一点,但不太确定。
[rccondsucc "Success Condition"]
[recovery
{stop | continue | rerun}
[after [workstation#]jobname]
[abendprompt “text”] ]
条件依赖:
作业语法:
安排语法:
答案 0 :(得分:1)
我想说这是不可能的。
使用RCCONDSUCC,您可以根据其返回代码微调作业的状态(SUCC或ABEND)。这仅仅意味着您不限于RC = 0 = SUCC或RC> 0 = ABEND。
使用RECOVERY,您可以指定仅在JOB处于ABEND时应采取的操作。
在这里,您要强制JOB到SUCC并指定RECOVERY ....
答案 1 :(得分:0)
要在条件依赖项的帮助下跳过Job2和Job3,Job1必须处于状态" E"。但是,您可以将Job4添加到仅在Job1中止时运行的应用程序(也使用CondDep定义)。此作业完成Job1(或整个应用程序)。 它有效 - 我在客户会议上展示了这个例子:-)
如果这些作业具有CondDep到Job1,Job1也可以完成并跳过作业Job2和Job3:Job1必须处于状态" C" AND Job1必须以RC<> 0结束。
答案 2 :(得分:0)
自9.3 FP1起,这可以通过内置conditional dependencies
实现假设您希望JOB3在JOB2异常终止时等待,使用条件依赖关系可以像这样实现您的场景
SCHEDULE SCH1
:
JOB1
DOCOMMAND "myscript"
STREAMLOGON twsuser
SUCCOUTPUTCOND GO "RC=0"
SUCCOUTPUTCOND NOGO "RC!=0"
JOB2
FOLLOWS JOB1 IF GO
JOB3
FOLLOWS JOB2
FOLLOWS JOB1 IF GO
END
JOB1定义了2 SUCCOUTPUTCOND
:如果RC = 0则为GO;如果RC!= 0则为NOGO。
两者都是SUCCOUTPUTCOND,这意味着在两种情况下JOB1都将进入SUCC。
FOLLOWS JOB1 IF GO
依赖关系,因此可以运行JOB2和JOB3(JOB3将等待JOB2,因为它还有FOLLOWS JOB2
) FOLLOWS JOB1 IF GO
不满足,JOB2和JOB3将设置为SUPPR
状态,不会运行。