调度任务Task是调度作业 Job 的实例,是调度作业的每一次运行。
调度任务用 状态 Status 来描述生命周期过程中的每一个“点”,每个状态用不同的颜色表示,任务状态对日常管理非常重要。这些状态有:
New
,新创建任务的状态,嫩绿色。Initialized
或Checking
,初始化完成或正在检查依赖中,闪烁的蓝色。有依赖的任务在依赖条件满足之前一直处于这个状态,无依赖的任务直接跳到Reday
状态。CheckingLimit
,前置依赖检查次数达到最大限制次数,紫色。没有依赖的任务不会产生这个状态。Ready
,准备执行状态,蓝色。在并行度达到上限时需要等待。WaitingLimit
,等待超过限定时间,棕色。当正在运行的任务数达到并行度上限时,再次生成的任务会产生等待,当等待时间超过限定时间时,任务会转变到这个状态。这个状态会终止任务运行。Executing
,正在执行中,闪烁的绿色。Finished
,执行完成,绿色。如果有后置依赖,则进行结果正确性检查,否则跳到Success
状态。Success
,执行成功,更深一点的绿色。表示正常执行完成且结果正确。Failed
,执行失败,表示任务在执行过程中发生错误,深红色。这个状态需要重点关注。Incorrect
,后置依赖检查后发现执行结果不正确中不符合预期,橙色。Timeout
,执行超过限定的时间,浅蓝色。Interrupted
,任务在执行过程中被手工中断,酱红色。NoCommands
,无可执行的命令,白底色橙色边框。当调度没有设置或禁用了所有可执行的命令或脚本时会出现这种情况。Ignore
,手动忽略本次任务,灰色。以上状态中,新建、检查中、准备执行、正在执行、执行完成属于中间状态,等待超时、执行成功、执行失败、执行超时、执行结果不正确属于完成状态,中断和忽略属于手工状态。
在任务详情页点击状态文字可以手工修改任务的状态。
如果是异常完成状态,会在调度作业列表页显示相应的提醒,表示任务发生异常但是未检查。同时在任务详情页“任务执行进度”瀑布图上面位置会出现一个待检查选项,只有检查过的异常任务才不会出现在列表页的提醒中。
每个调度任务都两个时间:一个是 任务时间,即创建时间,自动创建时秒位为0
,手工创建时为确切的时间。任务一经创建,任务时间不会改变。另一个是 记录时间,即任务每次运行的时间。如果任务只运行一次,任务时间与记录时间相同或相近。但是任务可能被多次执行,如任务失败后自动重启或手工重新运行,系统会保留每一次的任务运行记录及所有相关信息,所以每次的记录时间也会不同。即使多次运行任务,任务时间也不会改变。
在任务树形列表中显示的是任务的记录时间,如果任务运行过多次,则点击这个任务时会展开所有的任务记录。在任务详情页加大显示的是任务时间。
和调度作业一样,每一个调度任务包含很多信息,以方便日常管理和监控。
在任务详情页,有一个瀑布流图,用来显示整个任务生命周期的的各个时间点及持续时长。点击任务图可展开或折叠显示每个命令的执行情况,鼠标划过某一个时间段会显示明细。
任务的各个时间点和时间段说明如下:
同样工作流中的每个命令也有类似的时间点和时间段:
在任务未结束时这个图是动态的,会每秒钟更新一次,直到任务运行结束。
任务日志是调度任务最重要的部分,了解任务运行情况的关键。我们在程序中打印到控制台的信息都会被记录下来,无论是正常信息还是异常信息。
在任务运行过程中,日志会每秒钟自动更新。可以单独显示调试日志和错误日志,调试日志是Keeper自动生成的日志,而错误日志是程序本身出错或异常打印的日志。
中断和重启是仅有的两个可以控制任务的操作,在任务详情页右上方可以找到相应的操作按钮。
执行中的任务可以被中断。如果任务的工作流还没有被执行,仅是更新任务的状态;如果工作流已经开始执行,则会杀掉正在执行的所有相关进程。注意,只有.sh
扩展名的 Shell 命令产生的子进程,Keeper才会杀掉。其他类型的命令产生的子进程 Keeper 非常难以识别。
已执行完成的任务可以被重新启动而再次运行一次,再次运行会产生新的任务记录。
参考链接