Automic作业步骤中脚本非零返回后如何继续执行后续任务?
在单个Automic作业步骤中实现异常捕获与监控脚本必执行
可以通过Shell/CMD的错误状态捕获+流程强制续行来实现,确保无论核心BTEQ脚本执行成功或失败,后置监控脚本都会被执行,同时保留核心脚本的执行状态用于日志记录。
针对Shell环境(Linux/Unix)的实现
直接在作业步骤中编写以下命令逻辑:
# 执行前置监控脚本 BTEQ "PRE_MONITORING.sql" # 执行核心业务脚本,捕获返回码并强制流程继续 BTEQ "filename.sql" || true # 保存核心脚本的执行状态 EXIT_CODE=$? # 执行后置监控脚本,传入核心脚本的状态码(需POST脚本支持接收参数) BTEQ "POST_MONITORING.sql" "$EXIT_CODE" # 最终返回核心脚本的状态码,保证Automic作业的失败告警逻辑正常 exit $EXIT_CODE
关键逻辑说明:
|| true:强制核心脚本执行失败时不终止整个Shell流程,确保后续命令能继续运行EXIT_CODE=$?:捕获上一条BTEQ命令的返回值,0为成功,非0为失败- 后置监控脚本可通过传入的
EXIT_CODE参数,将核心脚本的实际执行状态写入DB表 - 最后
exit $EXIT_CODE:让Automic作业步骤的最终状态与核心脚本保持一致,不影响原有作业的失败触发机制
针对Windows CMD环境的实现
如果Automic作业步骤基于Windows命令行,可使用以下逻辑:
:: 执行前置监控脚本 BTEQ "PRE_MONITORING.sql" :: 执行核心业务脚本 BTEQ "filename.sql" :: 保存核心脚本的执行状态 set EXIT_CODE=%errorlevel% :: 执行后置监控脚本,传入状态码 BTEQ "POST_MONITORING.sql" %EXIT_CODE% :: 最终返回核心脚本的状态码 exit /b %EXIT_CODE%
关键逻辑说明:
%errorlevel%:Windows CMD中捕获上一条命令的返回码exit /b %EXIT_CODE%:仅终止当前CMD脚本,返回指定状态码给Automic作业步骤
内容的提问来源于stack exchange,提问作者spcial
相关产品推荐
相关产品推荐

