如何一次性执行JIL文件中的AutoSys insert_job与sendevent命令?
解决AutoSys JIL文件中无法识别sendevent命令的问题
刚接触AutoSys作业确实容易踩这个坑,我来给你捋清楚问题出在哪以及怎么解决:
问题根源
AutoSys的JIL(Job Information Language)文件是专门用来定义作业的元数据和属性的(比如作业要执行的命令、描述、运行机器、状态等),而sendevent是AutoSys提供的一个独立命令行工具,用于发送作业控制事件(比如冻结、解冻、重启作业等)——它不属于JIL语法的一部分,所以直接把它写到JIL的insert_job块里,系统自然识别不了。
两种可行的解决方法
方法1:拆分操作,先创建作业再发送冻结事件
把你的需求拆成两个独立步骤执行:
- 先编写正确的JIL文件(
test.jil),只保留作业定义部分:
insert_job: job_A command: echo 'mock' description : mock job A
- 依次执行以下命令:
- 运行JIL文件创建作业:
jil < test.jil - 单独执行sendevent命令冻结作业:
sendevent -E JOB_ON_ICE -J job_A
- 运行JIL文件创建作业:
方法2:直接在JIL中设置作业初始状态为冻结
如果你的需求是创建作业时就让它处于冻结状态,完全不需要用到sendevent,直接在JIL里添加status属性即可:
insert_job: job_A command: echo 'mock' description : mock job A status: ON_ICE
执行jil < test.jil后,job_A会直接以冻结状态存在,不需要额外执行sendevent命令。
额外提醒
以后编写JIL文件时,要严格遵循AutoSys的JIL语法规范,所有内容必须是作业支持的属性项,外部命令(比如sendevent、autorep等)都不能直接写在JIL文件里,需要单独在命令行执行。
内容的提问来源于stack exchange,提问作者user4900074
相关产品推荐
相关产品推荐

