Autosys如何设置文件监控作业,跨午夜也能匹配带启动日期的文件名
Autosys跨午夜文件监控问题解决方案
核心原因
你当前使用的date +%Y%m%d是执行查找动作时的实时系统日期,作业跨午夜运行后,系统日期切换为次日,自然无法匹配作业启动日对应的文件名。
方案1:使用Autosys原生内置变量(最推荐)
Autosys自带全局作业变量AUTORUNDATE,默认格式为YYYYMMDD,取值为作业实际启动时的日期,作业运行全程该值固定,不会随系统时间更新,完全适配你的需求。
配置方法很简单:直接将文件监控(fw)作业的文件名匹配规则修改为XXX_DONE_$AUTORUNDATE(Linux环境)即可,无需自行调用date命令,Autosys会自动将变量替换为作业启动时的年月日,哪怕跨午夜运行也不会出现匹配错误。
方案2:自定义脚本固化启动日期
如果不想依赖Autosys内置变量,也可以通过shell脚本在作业启动第一时间捕获日期,后续全流程使用该固定值匹配文件,示例脚本如下:
# 作业启动时立即捕获当前日期(如需指定美国东部时区,可添加TZ=America/New_York前缀) EXPECT_DATE=$(date +%Y%m%d) TARGET_FILE="XXX_DONE_${EXPECT_DATE}" MAX_WAIT=14400 # 最长等待4小时,单位为秒 CHECK_INTERVAL=60 # 每60秒检查一次文件 wait_seconds=0 while [ ${wait_seconds} -lt ${MAX_WAIT} ] do # 匹配到目标文件则正常退出 if [ -f "${TARGET_FILE}" ]; then echo "已找到目标文件:${TARGET_FILE}" exit 0 fi sleep ${CHECK_INTERVAL} wait_seconds=$((wait_seconds + CHECK_INTERVAL)) done # 超时未找到则异常退出,触发Autosys作业告警 echo "等待超时,未找到目标文件:${TARGET_FILE}" exit 1
补充注意事项
如果你的业务日期和Autosys服务器时区存在差异,需要统一日期计算的时区:
- 使用内置变量时,确认Autosys实例的时区配置和业务时区一致
- 自定义脚本时,在date命令前指定时区,例如美国东部时间写为
EXPECT_DATE=$(TZ=America/New_York date +%Y%m%d)
内容的提问来源于stack exchange,提问作者SudK
相关产品推荐
相关产品推荐

