CN110109740B - 一种Crontab命令的执行方法及装置 - Google Patents
一种Crontab命令的执行方法及装置 Download PDFInfo
- Publication number
- CN110109740B CN110109740B CN201910380079.8A CN201910380079A CN110109740B CN 110109740 B CN110109740 B CN 110109740B CN 201910380079 A CN201910380079 A CN 201910380079A CN 110109740 B CN110109740 B CN 110109740B
- Authority
- CN
- China
- Prior art keywords
- command
- crontab
- target
- state
- crontab command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
本申请提供了一种Crontab命令的执行方法及装置,运行目标Crontab命令;获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态;记录所述目标Crontab命令的执行状态。本发明通过记录Crontab命令的执行状态,实现了对Crontab命令的命令依赖和并发控制,降低Crontab命令的失败率,提高了Crontab命令的执行效率。
Description
技术领域
本发明涉及计算机技术领域,更具体的,涉及一种Crontab命令的执行方法及装置。
背景技术
在Unix和类Unix的操作系统中,Crontab命令用于设置周期性被执行的指令。Crontab命令可以简单以行为单位,每一行都指明了运行的时间、周期、待执行的命令等。
当系统中存在大量Crontab命令时,随着系统运行,Crontab命令累积越来越多,Crontab命令的失败率提高,不仅影响了系统运行,还在管理上带来很大的困扰。
发明内容
有鉴于此,本发明提供了一种Crontab命令的执行方法及装置,通过记录Crontab命令的执行状态,实现了对Crontab命令的命令依赖和并发控制,降低Crontab命令的失败率。
为了实现上述发明目的,本发明提供的具体技术方案如下:
一种Crontab命令的执行方法,包括:
运行目标Crontab命令;
获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态;
记录所述目标Crontab命令的执行状态。
可选的,所述获取所述目标Crontab命令所依赖的Crontab命令的执行状态,包括:
调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令;
获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
可选的,所述依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态,包括:
当所述目标Crontab命令所依赖的Crontab命令的执行状态不是已经结束状态时,控制所述目标Crontab命令进入依赖命令未完成状态;
当所述目标Crontab命令所依赖的Crontab命令的执行状态为已经结束状态时,控制所述目标Crontab命令进入正在运行状态;
判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若超过并发数量阈值,控制所述目标Crontab命令进入并发数超过限制进入等待状态;
若未超过并发数量阈值,判断所述目标Crontab命令是否执行成功;
若执行成功,控制所述目标Crontab命令进入已经结束状态;
若执行失败,控制所述目标Crontab命令进入执行失败状态。
可选的,所述记录所述目标Crontab命令的执行状态,包括:
以JSON格式记录所述目标Crontab命令的执行状态,并将所述目标Crontab命令的执行状态保存在Redis。
可选的,所述方法还包括:
将所述目标Crontab命令进入正在运行状态的时刻确定为所述目标Crontab命令的开始时刻,并将所述目标Crontab命令的开始时刻的时间戳保存在Redis;
将所述目标Crontab命令进入依赖命令未完成状态和/或并发数超过限制进入等待状态和/或执行失败状态和/或已经结束状态的时刻的时间戳保存在Redis。
可选的,在所述控制所述目标Crontab命令进入执行失败状态之后,所述方法还包括:
获取所述目标Crontab命令的重试次数;
当所述目标Crontab命令的重试次数不超过重试次数上限时,获取失败命令列表;
当所述失败命令列表中只有所述目标Crontab命令时,控制所述目标Crontab命令执行重试;
当所述失败命令列表中存在所述目标Crontab命令所依赖的Crontab命令时,先控制所述目标Crontab命令所依赖的Crontab命令执行重试,再控制所述目标Crontab命令执行重试;
当所述失败命令列表中存在多个Crontab命令,且所述失败命令列表中不存在所述目标Crontab命令所依赖的Crontab命令时,判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若未超过并发数量阈值,控制所述目标Crontab命令执行重试。
可选的,在所述控制所述目标Crontab命令进入并发数超过限制进入等待状态之后,所述方法还包括:
实时监测当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
当前处于正在运行状态的Crontab命令的数量小于并发数量阈值时,控制所述目标Crontab命令进入正在运行状态。
一种Crontab命令的执行装置,包括:
命令运行单元,用于运行目标Crontab命令;
数据获取单元,用于获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
命令执行单元,用于依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态;
状态记录单元,用于记录所述目标Crontab命令的执行状态。
可选的,所述数据获取单元,具体用于调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令;获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
可选的,所述命令执行单元,具体用于当所述目标Crontab命令所依赖的Crontab命令的执行状态不是已经结束状态时,控制所述目标Crontab命令进入依赖命令未完成状态;当所述目标Crontab命令所依赖的Crontab命令的执行状态为已经结束状态时,控制所述目标Crontab命令进入正在运行状态;判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;若超过并发数量阈值,控制所述目标Crontab命令进入并发数超过限制进入等待状态;若未超过并发数量阈值,判断所述目标Crontab命令是否执行成功;若执行成功,控制所述目标Crontab命令进入已经结束状态;若执行失败,控制所述目标Crontab命令进入执行失败状态。
可选的,所述状态记录单元,具体用于以JSON格式记录所述目标Crontab命令的执行状态,并将所述目标Crontab命令的执行状态保存在Redis。
可选的,所述状态记录单元还包括:
时间戳记录单元,用于将所述目标Crontab命令进入正在运行状态的时刻确定为所述目标Crontab命令的开始时刻,并将所述目标Crontab命令的开始时刻的时间戳保存在Redis;将所述目标Crontab命令进入依赖命令未完成状态和/或并发数超过限制进入等待状态和/或执行失败状态和/或已经结束状态的时刻的时间戳保存在Redis。
可选的,所述命令执行单元,还用于在所述控制所述目标Crontab命令进入执行失败状态之后,获取所述目标Crontab命令的重试次数;当所述目标Crontab命令的重试次数不超过重试次数上限时,获取失败命令列表;当所述失败命令列表中只有所述目标Crontab命令时,控制所述目标Crontab命令执行重试;当所述失败命令列表中存在所述目标Crontab命令所依赖的Crontab命令时,先控制所述目标Crontab命令所依赖的Crontab命令执行重试,再控制所述目标Crontab命令执行重试;当所述失败命令列表中存在多个Crontab命令,且所述失败命令列表中不存在所述目标Crontab命令所依赖的Crontab命令时,判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;若未超过并发数量阈值,控制所述目标Crontab命令执行重试。
可选的,所述命令执行单元,还用于实时监测当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;当前处于正在运行状态的Crontab命令的数量小于并发数量阈值时,控制所述目标Crontab命令进入正在运行状态。
相对于现有技术,本发明的有益效果如下:
本发明公开的一种Crontab命令的执行方法及装置,在运行目标Crontab命令时,依据目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,实现对目标Crontab命令的命令依赖控制和并发控制,降低Crontab命令的失败率,提高了Crontab命令的执行效率,降低管理成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例公开的一种Crontab命令的执行方法的流程示意图;
图2为本发明实施例公开的又一种Crontab命令的执行方法的流程示意图;
图3为本发明实施例公开的一种Crontab命令的失败重试控制方法的流程示意图;
图4为本发明实施例公开的一种Crontab命令的执行装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在实际应用中,系统中的ETL命令一般以Crontab命令形式执行,发明人通过对系统运行研究发现,当系统中存在大量Crontab命令时,Crontab命令运行及其不稳定,Crontab命令的失败率很高。导致Crontab命令执行失败的问题主要如下:
1、命令的重试问题
一个命令执行失败了,原因有很多。实际工作中遇到很多情况不是命令本身的问题,而是因为运行环境、网络、数据库等其他因素导致,这种情况,我们需要重试命令来获得正确的结果。虽然Crontab可以周期地执行命令,但是在一个周期内如果执行错误,就没有办法来重试,除非在指令内部自己做重试的额外动作,但实际情况是很多命令都不会有重试检查。
2、命令之间依赖的问题
在很多场景下,多个命令之间存在依赖关系,Crontab可以很好定义周期运行命令的启动时间,但是并不能管理命令之间的依赖。虽然可以定义他们的启动运行顺序,但是这种状态是极不稳定的。
比如A->B,表示B依赖A。假如在运行的过程中,命令A执行失败或者超时了,命令B并不知道A的状态,还是会被如期地执行。其实A失败了,最终B命令运行结果也会受到影响。出现这种现象,相当于命令B的执行属于无用功,浪费了系统的计算资源。
3、并发量无法控制
Crontab可以精确的控制命令的启动执行时间,但只是简单的命令启动,无法做到并发量的控制。某些情况下,一旦命令出现异常导致超过了预期执行时间,这会引起越来越多命令同时并发运行,很容易导致命令因为运行环境资源不足而失败。
发明人通过研究发现,要实现Crontab命令具有失败重试、命令依赖和并发控制功能,需要得到Crontab命令的执行状态。为了让所有的Crontab命令都有执行状态,并且保持执行状态格式上的统一,本发明采用执行命令的封装器(CommandWrapper)执行Crontab命令。
该封装器的主要功能如下:
1)运行Crontab命令
运行Crontab命令的方式就是以后台进程的方式执行一个命令,该方式绝大部分程序语言都可以支持,包括主流的Java、C/C++、Python、PHP、Go等。
2)命令依赖检查
3)记录命令的执行状态,并且以一定的格式保存
Command Wrapper一旦写好后,几乎不用太大的修改,即可以满足大多数的场景。
在此基础上,本实施例公开了一种Crontab命令的执行方法,应用于上述封装器,请参阅图1,该方法具体包括以下步骤:
S101:运行目标Crontab命令;
S102:获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
由于每个Crontab命令在执行过程中都会记录其执行状态,因此,可以获取目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量。
具体的,调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令,再获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
命令依赖包含两个方面:
1)多层级的依赖
多层级依赖是指多个命令,组合成串行的执行方式,比如A->B->C->D,这表示D依赖C,C依赖B,B依赖A。执行顺序是A,B,C,D
2)同时依赖多个命令
一个命令可以同时依赖多个命令,比如A->C,B->C,这表示命令C依赖于命令A和B
通过1)和2),所有的命令组合起来将会是一个森林结构。
命令依赖格式还是用通用的JSON方式来定义,为了满足上述两个要求,我们定义的命令依赖的格式如下:
在上述JSON格式中,“command”表示当前命令行的MD5值,“dependencies”表示当前命令行的依赖列表。
S103:依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态;
S104:记录所述目标Crontab命令的执行状态。
Crontab命令的执行状态包括:正在运行(Running)、已经结束(Finished)、执行失败(Failed)、依赖命令未完成(Dependency Failed)和并发数超过限制进入等待状态(Concurrency Exceed)。
具体的,为了方便地处理Crontab命令的执行状态,以JSON格式记录所述目标Crontab命令的执行状态,并将所述目标Crontab命令的执行状态保存在Redis,方便查询命令执行状态等信息。
同时,还需要将所述目标Crontab命令进入正在运行状态的时刻确定为所述目标Crontab命令的开始时刻,并将所述目标Crontab命令的开始时刻的时间戳保存在Redis,将所述目标Crontab命令进入依赖命令未完成状态和/或并发数超过限制进入等待状态和/或执行失败状态和/或已经结束状态的时刻的时间戳保存在Redis。
因此,Crontab命令的执行状态的记录信息包括:命令的执行状态、命令的开始时间(以秒为单位的时间戳)和命令的结束时间(以秒为单位的时间戳)。比如如下:
同时可以在状态信息中加入更多的字段,满足不通的场景需求。
还需要说明的是,将Crontab命令的执行状态信息存储在Redis,信息独立存储,方便各个编程语言方便的存储和读取,具有自动备份的功能,且存储和读取速度快。
考虑到存取数据的方便性,将Crontab命令的执行状态信息保存到Redis的Hash数据结构中,其中Hash key是计算Crontab命令的md5值:
HashKey=MD5(CommandLine)
Hash Value就是JSON格式的命令执行状态信息。
请参阅图2,依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态,包括以下步骤:
S201:判断目标Crontab命令所依赖的Crontab命令的执行状态是否为已经结束状态;
当目标Crontab命令所依赖的Crontab命令为多条时,需要判断目标Crontab命令所依赖的多条Crontab命令是否都为已经结束状态。
若不是都已经结束状态,执行S202:控制目标Crontab命令进入依赖命令未完成状态;
需要说明的是,当目标Crontab命令所依赖的Crontab命令都为已经结束状态时,控制目标Crontab命令进入状态运行状态。
若都已经结束状态,S203:控制目标Crontab命令进入正在运行状态;
S204:判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若超过并发数量阈值,S205:控制目标Crontab命令进入并发数超过限制进入等待状态;
若未超过并发数量阈值,S206:判断目标Crontab命令是否执行成功;
若执行成功,S207:控制目标Crontab命令进入已经结束状态;
若执行失败,S208:控制目标Crontab命令进入执行失败状态。
进一步,当目标Crontab命令进入执行失败状态时,需要对其进行失败重试控制,请参阅图3,失败重试控制方法如下:
S301:获取目标Crontab命令的重试次数;
S302:判断目标Crontab命令的重试次数是否超过重试次数上限;
当超过重试次数上限时,S303:将目标Crontab命令的最终执行状态记录为执行失败状态;
当不超过重试次数上限时,S304:获取失败命令列表;
S305:判断失败命令列表中是否只有目标Crontab命令;
若只有目标Crontab命令,S306:控制目标Crontab命令执行重试;
若不是只有目标Crontab命令,S307:判断失败命令列表中是否存在目标Crontab命令所依赖的Crontab命令;
若存在目标Crontab命令所依赖的Crontab命令时,S308:先控制目标Crontab命令所依赖的Crontab命令执行重试,再控制目标Crontab命令执行重试;
若不存在目标Crontab命令所依赖的Crontab命令时,S309:判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若未超过并发数量阈值,S306:控制所述目标Crontab命令执行重试。
若超过并发数量阈值,S310:控制所述目标Crontab命令进入并发数超过限制进入等待状态。
需要说明的是,本实施例还包括:实时监测当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;当前处于正在运行状态的Crontab命令的数量小于并发数量阈值时,控制所述目标Crontab命令进入正在运行状态。
可见,本实施例公开的一种Crontab命令的执行方法,通过记录Crontab命令的执行状态,实现Crontab命令的命令依赖、并发控制和失败重试控制,降低了Crontab命令的失败率,提高了Crontab命令的执行效率,降低管理成本。
基于上述实施例公开的一种Crontab命令的执行方法,本实施例对应公开了一种Crontab命令的执行装置,请参阅图4,该装置包括:
命令运行单元401,用于运行目标Crontab命令;
数据获取单元402,用于获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
命令执行单元403,用于依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态;
状态记录单元404,用于记录所述目标Crontab命令的执行状态。
可选的,所述数据获取单元,具体用于调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令;获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
可选的,所述命令执行单元403,具体用于当所述目标Crontab命令所依赖的Crontab命令的执行状态不是已经结束状态时,控制所述目标Crontab命令进入依赖命令未完成状态;当所述目标Crontab命令所依赖的Crontab命令的执行状态为已经结束状态时,控制所述目标Crontab命令进入正在运行状态;判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;若超过并发数量阈值,控制所述目标Crontab命令进入并发数超过限制进入等待状态;若未超过并发数量阈值,判断所述目标Crontab命令是否执行成功;若执行成功,控制所述目标Crontab命令进入已经结束状态;若执行失败,控制所述目标Crontab命令进入执行失败状态。
可选的,所述状态记录单元404,具体用于以JSON格式记录所述目标Crontab命令的执行状态,并将所述目标Crontab命令的执行状态保存在Redis。
可选的,所述状态记录单元404还包括:
时间戳记录单元,用于将所述目标Crontab命令进入正在运行状态的时刻确定为所述目标Crontab命令的开始时刻,并将所述目标Crontab命令的开始时刻的时间戳保存在Redis;将所述目标Crontab命令进入依赖命令未完成状态和/或并发数超过限制进入等待状态和/或执行失败状态和/或已经结束状态的时刻的时间戳保存在Redis。
可选的,所述命令执行单元403,还用于在所述控制所述目标Crontab命令进入执行失败状态之后,获取所述目标Crontab命令的重试次数;当所述目标Crontab命令的重试次数不超过重试次数上限时,获取失败命令列表;当所述失败命令列表中只有所述目标Crontab命令时,控制所述目标Crontab命令执行重试;当所述失败命令列表中存在所述目标Crontab命令所依赖的Crontab命令时,先控制所述目标Crontab命令所依赖的Crontab命令执行重试,再控制所述目标Crontab命令执行重试;当所述失败命令列表中存在多个Crontab命令,且所述失败命令列表中不存在所述目标Crontab命令所依赖的Crontab命令时,判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;若未超过并发数量阈值,控制所述目标Crontab命令执行重试。
可选的,所述命令执行单元403,还用于实时监测当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;当前处于正在运行状态的Crontab命令的数量小于并发数量阈值时,控制所述目标Crontab命令进入正在运行状态。
本实施例公开的一种Crontab命令的执行装置,在运行目标Crontab命令时,依据目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,实现对目标Crontab命令的命令依赖控制和并发控制,降低Crontab命令的失败率,提高了Crontab命令的执行效率,降低管理成本。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (8)
1.一种Crontab命令的执行方法,其特征在于,包括:
运行目标Crontab命令;
获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态,其中,所述依赖的方式包含多层级依赖及同时依赖多个命令;
记录所述目标Crontab命令的执行状态;
所述依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态,包括:
当所述目标Crontab命令所依赖的Crontab命令的执行状态不是已经结束状态时,控制所述目标Crontab命令进入依赖命令未完成状态;
当所述目标Crontab命令所依赖的Crontab命令的执行状态为已经结束状态时,控制所述目标Crontab命令进入正在运行状态;
判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若超过并发数量阈值,控制所述目标Crontab命令进入并发数超过限制进入等待状态;
若未超过并发数量阈值,判断所述目标Crontab命令是否执行成功;
若执行成功,控制所述目标Crontab命令进入已经结束状态;
若执行失败,控制所述目标Crontab命令进入执行失败状态。
2.根据权利要求1所述的方法,其特征在于,所述获取所述目标Crontab命令所依赖的Crontab命令的执行状态,包括:
调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令;
获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
3.根据权利要求1所述的方法,其特征在于,所述记录所述目标Crontab命令的执行状态,包括:
以JSON格式记录所述目标Crontab命令的执行状态,并将所述目标Crontab命令的执行状态保存在Redis。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
将所述目标Crontab命令进入正在运行状态的时刻确定为所述目标Crontab命令的开始时刻,并将所述目标Crontab命令的开始时刻的时间戳保存在Redis;
将所述目标Crontab命令进入依赖命令未完成状态和/或并发数超过限制进入等待状态和/或执行失败状态和/或已经结束状态的时刻的时间戳保存在Redis。
5.根据权利要求1所述的方法,其特征在于,在所述控制所述目标Crontab命令进入执行失败状态之后,所述方法还包括:
获取所述目标Crontab命令的重试次数;
当所述目标Crontab命令的重试次数不超过重试次数上限时,获取失败命令列表;
当所述失败命令列表中只有所述目标Crontab命令时,控制所述目标Crontab命令执行重试;
当所述失败命令列表中存在所述目标Crontab命令所依赖的Crontab命令时,先控制所述目标Crontab命令所依赖的Crontab命令执行重试,再控制所述目标Crontab命令执行重试;
当所述失败命令列表中存在多个Crontab命令,且所述失败命令列表中不存在所述目标Crontab命令所依赖的Crontab命令时,判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
若未超过并发数量阈值,控制所述目标Crontab命令执行重试。
6.根据权利要求5所述的方法,其特征在于,在所述控制所述目标Crontab命令进入并发数超过限制进入等待状态之后,所述方法还包括:
实时监测当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;
当前处于正在运行状态的Crontab命令的数量小于并发数量阈值时,控制所述目标Crontab命令进入正在运行状态。
7.一种Crontab命令的执行装置,其特征在于,包括:
命令运行单元,用于运行目标Crontab命令;
数据获取单元,用于获取所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量;
命令执行单元,用于依据所述目标Crontab命令所依赖的Crontab命令的执行状态以及当前处于正在运行状态的Crontab命令的数量,控制所述目标Crontab命令进入相应的执行状态,其中,所述依赖的方式包含多层级依赖及同时依赖多个命令;
状态记录单元,用于记录所述目标Crontab命令的执行状态;
所述命令执行单元,具体用于当所述目标Crontab命令所依赖的Crontab命令的执行状态不是已经结束状态时,控制所述目标Crontab命令进入依赖命令未完成状态;当所述目标Crontab命令所依赖的Crontab命令的执行状态为已经结束状态时,控制所述目标Crontab命令进入正在运行状态;判断当前处于正在运行状态的Crontab命令的数量是否超过并发数量阈值;若超过并发数量阈值,控制所述目标Crontab命令进入并发数超过限制进入等待状态;若未超过并发数量阈值,判断所述目标Crontab命令是否执行成功;若执行成功,控制所述目标Crontab命令进入已经结束状态;若执行失败,控制所述目标Crontab命令进入执行失败状态。
8.根据权利要求7所述的装置,其特征在于,所述数据获取单元,具体用于调用Crontab命令依赖列表,获取所述目标Crontab命令所依赖的Crontab命令;获取所述目标Crontab命令所依赖的Crontab命令的执行状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910380079.8A CN110109740B (zh) | 2019-05-08 | 2019-05-08 | 一种Crontab命令的执行方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910380079.8A CN110109740B (zh) | 2019-05-08 | 2019-05-08 | 一种Crontab命令的执行方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110109740A CN110109740A (zh) | 2019-08-09 |
CN110109740B true CN110109740B (zh) | 2021-08-10 |
Family
ID=67488771
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910380079.8A Active CN110109740B (zh) | 2019-05-08 | 2019-05-08 | 一种Crontab命令的执行方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110109740B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110041A (zh) * | 2007-08-23 | 2008-01-23 | 南京联创科技股份有限公司 | 组任务管理的方法 |
CN102981904A (zh) * | 2011-09-02 | 2013-03-20 | 阿里巴巴集团控股有限公司 | 一种任务调度方法及系统 |
CN103197969A (zh) * | 2013-03-27 | 2013-07-10 | 百度在线网络技术(北京)有限公司 | 一种分布式定时任务控制装置及方法 |
CN103677973A (zh) * | 2013-09-01 | 2014-03-26 | 西安重装渭南光电科技有限公司 | 一种分布式多任务调度管理系统 |
CN103744764A (zh) * | 2013-12-26 | 2014-04-23 | 浪潮电子信息产业股份有限公司 | 一种基于Crontab的整机内存稳定性的测试方法 |
CN105630588A (zh) * | 2014-11-06 | 2016-06-01 | 卓望数码技术(深圳)有限公司 | 一种分布式作业调度方法和系统 |
CN108491254A (zh) * | 2018-02-07 | 2018-09-04 | 链家网(北京)科技有限公司 | 一种数据仓库的调度方法及装置 |
CN108960641A (zh) * | 2018-07-10 | 2018-12-07 | 康成投资(中国)有限公司 | 电商平台作业调度方法及系统 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106814993B (zh) * | 2015-12-01 | 2019-04-12 | 广州神马移动信息科技有限公司 | 确定任务调度时间的方法、确定任务执行时间的方法和设备 |
CN105512938A (zh) * | 2016-02-03 | 2016-04-20 | 宜人恒业科技发展(北京)有限公司 | 一种基于用户长期使用行为的在线信用风险评估方法 |
CN107147525A (zh) * | 2017-05-12 | 2017-09-08 | 山东浪潮商用系统有限公司 | 基于跨站切换采集实现业务数据恢复的方法 |
CN108037991A (zh) * | 2017-12-26 | 2018-05-15 | 中山大学 | 一种支持作业依赖关系的定时作业调度方法及系统 |
-
2019
- 2019-05-08 CN CN201910380079.8A patent/CN110109740B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101110041A (zh) * | 2007-08-23 | 2008-01-23 | 南京联创科技股份有限公司 | 组任务管理的方法 |
CN102981904A (zh) * | 2011-09-02 | 2013-03-20 | 阿里巴巴集团控股有限公司 | 一种任务调度方法及系统 |
CN103197969A (zh) * | 2013-03-27 | 2013-07-10 | 百度在线网络技术(北京)有限公司 | 一种分布式定时任务控制装置及方法 |
CN103677973A (zh) * | 2013-09-01 | 2014-03-26 | 西安重装渭南光电科技有限公司 | 一种分布式多任务调度管理系统 |
CN103744764A (zh) * | 2013-12-26 | 2014-04-23 | 浪潮电子信息产业股份有限公司 | 一种基于Crontab的整机内存稳定性的测试方法 |
CN105630588A (zh) * | 2014-11-06 | 2016-06-01 | 卓望数码技术(深圳)有限公司 | 一种分布式作业调度方法和系统 |
CN108491254A (zh) * | 2018-02-07 | 2018-09-04 | 链家网(北京)科技有限公司 | 一种数据仓库的调度方法及装置 |
CN108960641A (zh) * | 2018-07-10 | 2018-12-07 | 康成投资(中国)有限公司 | 电商平台作业调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110109740A (zh) | 2019-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103034554B (zh) | 一种纠错重启以及自动判断启动的etl调度系统及方法 | |
CN102576331B (zh) | 用于在虚拟机监视器环境中的虚拟机之间同步瞬时资源使用的系统和方法 | |
JP5093259B2 (ja) | Biosとbmcとの間の通信パス強化方法、その装置及びそのプログラム | |
CN102279768B (zh) | 仿真装置以及仿真方法 | |
CN108173840B (zh) | 基于云平台的智能物流终端集成系统 | |
CN110737453A (zh) | 安全芯片的升级方法、装置及安全芯片 | |
US9824229B2 (en) | Controller with enhanced reliability | |
CN114584539B (zh) | 一种工业现场设备的云端升级方法及系统 | |
CN110109740B (zh) | 一种Crontab命令的执行方法及装置 | |
CN113297009B (zh) | 一种信息备份方法、设备、平台及存储介质 | |
CN105335244B (zh) | 用于应用程序恢复的方法 | |
CN110555009B (zh) | 一种网络文件系统nfs服务的处理方法及装置 | |
CN109117277B (zh) | 异步环境中模拟同步阻塞的方法及装置、存储介质、服务器、终端 | |
CN107958414B (zh) | 一种清除cics系统长交易的方法及系统 | |
CN116069765A (zh) | 数据迁移方法、装置、电子设备及存储介质 | |
US20090168092A1 (en) | Job management and scheduling method for network system | |
CN115686891A (zh) | 一种日志回放控制方法、装置以及设备 | |
CN117251260A (zh) | 一种数据处理方法及系统 | |
CN111209101B (zh) | 一种大数据计算任务多依赖调度系统 | |
CN110795334B (zh) | 一种测试装置和方法 | |
CN112597227A (zh) | 电力配网调度中的信息处理方法、装置及存储介质 | |
CN108958827B (zh) | 一种处理程序升级故障的方法和系统 | |
CN113220442B (zh) | 数据调度方法、装置及电子设备 | |
JP4562641B2 (ja) | コンピュータシステム、動作状態判定プログラムおよび動作状態判定方法 | |
CN110806917A (zh) | 一种防脑裂的虚拟机高可用的管理装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |