如何配置Autosys作业:日常每日一次,月末或月首末周每日三次
嘿,针对你的两个Autosys作业配置需求,我来分享下实际项目里常用的靠谱方案,都是经过验证可落地的:
问题1:配置Autosys作业每日运行一次,月末期间每日运行三次
最清晰且易维护的方式是拆分两个作业,结合Autosys的日历(Calendar)功能来区分日常和月末时段:
步骤1:创建月末专属日历
首先用autocal命令创建一个标记月末日期的日历(示例定义为每个月最后3天,你可以根据实际需求调整天数):
autocal -c end_of_month_cal -t "LAST 3 DAYS OF MONTH"
步骤2:配置日常运行作业
这个作业只在非月末日期执行,每天一次(示例时间为凌晨2点):
insert_job: daily_regular_job job_type: CMD command: /your/actual/script/path.sh machine: your_target_server start_time: 02:00 days_of_week: all condition: !($DATE_IN(end_of_month_cal)) # 仅当不在月末日历日期时运行
步骤3:配置月末时段作业
这个作业只在月末日历日期执行,每天三次(示例时间为凌晨2点、上午10点、下午6点):
insert_job: end_of_month_peak_job job_type: CMD command: /your/actual/script/path.sh machine: your_target_server start_times: "02:00, 10:00, 18:00" run_calendar: end_of_month_cal # 仅在月末日历日期运行
为啥选拆分作业?
这种方式逻辑清晰,日常和月末的运行记录分开,方便监控和排查问题,比在单个作业里写复杂条件要可靠得多。
问题2:配置Autosys作业日常每日一次,当月最后一周及次月第一周每日三次
思路和问题1一致,核心还是用日历标记目标时段,拆分作业执行:
步骤1:创建目标时段日历
用autocal创建包含当月最后一周+次月第一周的日历(如果是自然周而非固定7天,可把LAST 7 DAYS改成LAST WEEK,FIRST 7 DAYS改成FIRST WEEK):
autocal -c peak_period_cal -t "LAST 7 DAYS OF MONTH" -t "FIRST 7 DAYS OF NEXT MONTH"
步骤2:配置日常运行作业
和问题1的日常作业逻辑一致,仅在非高峰时段运行:
insert_job: daily_regular_job_v2 job_type: CMD command: /your/actual/script/path.sh machine: your_target_server start_time: 02:00 days_of_week: all condition: !($DATE_IN(peak_period_cal))
步骤3:配置高峰时段作业
仅在目标时段(当月最后一周+次月第一周)每天运行三次:
insert_job: peak_period_run_job job_type: CMD command: /your/actual/script/path.sh machine: your_target_server start_times: "02:00, 10:00, 18:00" run_calendar: peak_period_cal
额外注意点
- 日历创建后,可用
autocal -l peak_period_cal验证日期是否符合预期 - 如果担心作业重复触发,可以在脚本里加文件锁逻辑,或者在作业条件里补充避免重叠的判断
- 用
autorep -J [jobname] -q可以快速查看作业的配置是否生效
内容的提问来源于stack exchange,提问作者Avinash
相关产品推荐
相关产品推荐

