cron每秒执行一次_cron30秒执行一次
linux下制定crontab定时任务每天8点到20点每隔两小时执行一次
0 8,10,12,14,16,18,20 8 6. 创建一个新的crontab文件/bin/sh /back/temp.sh
cron每秒执行一次_cron30秒执行一次
cron每秒执行一次_cron30秒执行一次
至少这样不会错的,呵呵。
0 8-20/2 /bin/sh /back/temp.sh
使用mysql的定时任务是不是很消耗mysql的资源
每周一上午8点到11点的第3和第15分钟执行自 MySQL5.1.6起,增加了一个非常有特色的功能–调度器(Event Scheduler),可以用做定时执行某些特定任务(例如:删除记录、对数据进行汇总等等),来取代原先只能由作系统的任务来执行的工作。更值得一提的是MySQL的调度器可以到每秒钟执行一个任务,而作系统的任务(如:Linux下的CRON或Windows下的任务)只能到每分钟执行一次。对于一些对数据实时性要求比较高的应用(例如:股票、、比分等)就非常适合。
"0 15 10 ? 6L 2002-2005" 2002年至2005年的每月的一个星期五上午10:15触发spring cron配置每几分钟怎么设置
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。
这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现
中cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我们可以直接调用CronTriggerBean中设置cronExpression的方法,就可以顺利解决问题了。
熟悉1的朋友可以跳过不看,下面2、3是动态定时任务的具体实现。
1. Quartz在Spring中的简单配置
Spring配置文件:
在上面的配置中设定了
① targetMod: 指定需要定时执行scheduleInfoAction中的JobTest()方法
② concurrent:对于相同的JobDetail,当指定多个Trigger时, 很可能个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将不会在个job完成之前开始。
③ cronExpression:0/10 ?表示每10秒执行一次,具体可参考附表。
④ triggers:通过再添加其他的ref元素可在list中放置多个触发器。
scheduleInfoAction中的JobTest()方法
注意:此方法没有参数,如果scheduleInfoAction有两个方法JobTest()和JobTest(String argument),则spring只会去执行无参的JobTest().
public void JobTest() {
log.warn("uh oh, Job is scheduled !'" + "' Success...");
Spring配置文件:
scheduleInfoAction中的reScheduleJob ()方法及相关方法
① reScheduleJob读取数据库,获得自定义定时器调度时间():
private void reScheduleJob() throws SchedulerException, ParseException {
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger(
"cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
// executeJobDetail();
}② getCronExpressionFromDB():从数据库中获得dbCronExpression的具体代码,由于使用了scheduleInfoMar,所以要在定义相应的setter方法
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.Id = '"+"1" + "'";
List scheduleList = scheduleInfoMar.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}③ 在spring配置文件的scheduleInfoAction配置了相应的property(scheduler/ scheduleInfoMar),要为其设置setter方法
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}private ScheduleInfoMar scheduleInfoMar;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoMar
public void setScheduleInfoMar(ScheduleInfoMar scheduleInfoMar){
this"0 0 12 ?" 每天中午12点触发.scheduleInfoMar = scheduleInfoMar;
}3. Quartz在Spring中动态设置cronTrigger方法二
在上面的2中我们可以看到,尽管已经可以动态进行rescheduleJob了,不过依然需要我们设置一个cronExpression,如果尝试一下拿掉spring配置中的
则容器(如tomcat)启动时会报错。
实际中我们希望tomcat启动时就可以直接去读数据库,拿到相应的dbCronExpression,然后定时执行一个job,而不希望配置初始的cronExpression ,观察下面的CronTriggerBean,考虑到cronExpression需要初始化,如果设定一个类InitializingCronTrigger继承CronTriggerBean,然后在这个类中做一些读取DB的初始化工作(设置cronExpression),问题就可以解决了。
Spring配置文件:
InitializingCronTrigger中的相关方法
注意:在注入scheduleInfoMar属性的时候,我们可以去读取DB任务时间(之所以放在setter方法中,是因为需要在设置scheduleInfoMar后进行getCronExpressionFromDB(),否则,也可以①②逻辑把放在类的构造函数中).
注意InitializingCronTrigger必须extends CronTriggerBean.
public class InitializingCronTrigger extends CronTriggerBean implements Serializable {
private ScheduleInfoMar scheduleInfoMar;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoMar
public void setScheduleInfoMar(ScheduleInfoMar scheduleInfoMar){
this.scheduleInfoMar = scheduleInfoMar;
// 因为在getCronExpressionFromDB使用到了scheduleInfoMar,所以
// 必须上一行代码设置scheduleInfoMar后进行getCronExpressionFromDB
// 因为extends CronTriggerBean ,此处调用父类方法初始化cronExpression
setCronExpression(cronExpression); // ②
}private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.Id = '"+"1" + "'";
List scheduleList = scheduleInfoMar.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}…"0 15 10 ? 6L 2002-2005" 2002年至2005年的每月的一个星期五上午10:15触发…
}附表:
"0 15 10 ?" 每天上午10:15触发
"0 15 10 ? 2005" 2005年的每天上午10:15触发
"0 14 ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14,18 ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 ?" 每月15日上午10:15触发
"0 15 10 L ?" 每月一日的上午10:15触发
每隔5秒执行一次:/5 ?
每隔1分钟执行一次:0 /1 ?
每天23点执行一次:0 0 23 ?
每天凌晨1点执行一次:0 0 1 ?
每月1号凌晨1点执行一次:0 0 1 1 ?
每月一天23点执行一次:0 0 23 L ?
每周星期天凌晨1点实行一次:0 0 1 ? L
至于每个符号 看看例子就好了.很简单了.
linux命令行下怎么定时执行一个命令?
要运行的命令只执行一次用at,比如:
at now + 20 minutes
at> echo "Hello !!" > /dev/pts/0
at>
crontab -e
×/20 × × × × echo "Hello !!" > /dev/pts/0详细请man at和man crontab
linux有个系统级的定时任务服务,叫cron,终端里的命令是crontab。
crontab -oot -l 查看root用户的所有定时任务。
crontab -oot -e是编辑root用户的定时任务,输入这条会进入"0 15 10 ? " 每天上午10:15触发vi编辑模式。
编辑是有固定格式的,具体你可以搜索cron命令的用法。
写一个bash文件,里面放(sleep+时间)语句,后台执行(nohup)这个脚本就行了。另外可以参考一下crontab,这个相当于任务。
crontab -e
20 /home/clear.sh #每隔20分钟执行一次/home文件夹下的clear.sh脚本
crontab -e 命令的路径
Spring+quartz 做定时任务时,每5分种执行一次,怎么写法
调度器是MySQL5.1后新增的功能,可以将数据库按自定义的时间周期触发某种作,可以理解为时间触发器,类似于linux系统下面的任务调度器crontab,或者类似与window下面的任务。可以使用cron表达式写, 5 。以下为cron表达式详解:
Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:
Seconds Minutes Hours DayofMonth Month DayofWeek Year或
Seconds Minutes Hours DayofMonth Month DayofWeek
每一个域可出现的字符如下:
Seconds:可出现", - /"四个字符?,有效范围为0-59的整数
Minutes:可出现", - /"四个字符,有效范围为0-59的整数
Hours:可出现", - /"四个字符,有效范围为0-23的整数
DayofMonth:可出现", - / ? L W C"八个字符,有效范围为0-31的整数
Month:可出现", - /"四个字符,有效范围为1-12的整数或JAN-DEc
DayofWeek:可出现", - / ? L C #"四个字符,有效范围为1-7的整数或SUN-SAT两个范围。1表示星期天,2表示星期一, 依次类推
Year:可出现", - /"四个字符,有效范围为1970-2099年
每一个域都使用数字,但还可以出现如下特殊字符,它们的含义是:
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 ?, 其中一位只能用?,而不能使用,如果使用表示不管星期几都会触发,实际上并不是这样。
(3)-:表围,例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次,例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
(6)L:表示,只能出现在DayofWeek和DayofMonth域,如果在DayofWeek域使用5L,意味着在的一个星期四触发。
(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份
(8)LW:这两个字符可以连用,表示在某个月一个工作日,即一个星期五。
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
举几个例子:
0 0 2 1 ? 表示在每月的1日的凌晨2点调度任务
0 15 10 ? MON-FRI 表示周一到周五每天上午10:15执行作业
0 15 10 ? 6L 2002-2006 表示2002-2006年的每个月的一个星期五上午10:15执行作
一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。
按顺序依次为
秒(0~59)
分钟(0~59)
小时(0~23)
天(月)(0~31,但是你需要考虑你月的天数)
月(0~11)
天(星期)(1~7 1=SUN 或 SUN,MON,TUE,WED,THU,FRI,SAT)
年份(1970-2099)
其中每个元素可以是一个值(如6),一个连续区间(9-12),一个间隔时间(8-18/4)(/表示每隔4小时),一个列表(1,3,5),通配符。由于"月份中的日期"和"星期中的日期"这两个元素互斥的,必须要对其中一个设置?
0 0 10,14,16 ? 每天上午10点,下午2点,4点
0 0/30 9-17 ? 朝九晚五工作时间内每半小时
0 0 12 ? WED 表示每个星期三中午12点
"0 15 10 ?" 每天上午10:15触发
"0 15 10 ? 2005" 2005年的每天上午10:15触发
"0 14 ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14,18 ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 ?" 每月15日上午10:15触发
"0 15 10 L ?" 每月一日的上午10:15触发
有些子表达式能包含一些范围或列表
例如:子表达式(天(星期))可以为 “MON-FRI”,“MON,WED,FRI”,“MON-WED,SAT”
“”字符代表所有可能的值
因此,“”在子表达式(月)里表示每个月的含义,“”在子表达式(天(星期))表示星期的每一天
“/”字符用来指定数值的增量
例如:在子表达式(分钟)里的“0/15”表示从第0分钟开始,每15分钟
在子表达式(分钟)里的“3/20”表示从第3分钟开始,每20分钟(它和“3,23,43”)的含义一样
“?”字符仅被用于天(月)和天(星期)两个子表达式,表示不指定值
当2个子表达式其中之一被指定了值以后,为了避免冲突,需要将另一个子表达式的值设为“?”
“L” 字符仅被用于天(月)和天(星期)两个子表达式,它是单词“last”的缩写
在天(星期)自表达式中,“L”表示一个星期的一天,也就是SAT
如果在“L”前有具体的内容,它就具有其他的含义了
例如:“6L”表示这个月的倒数第6天,“FRIL”表示这个月的最一个星期五
注意:在使用“L”参数时,不要指定列表或范围,因为这会导致问题
字段 允许值 允许的特殊字符
秒 0-59 , - /
分 0-59 , - /
小时 0-23 , - /
日期 1-31 , - ? / L W C
月份 1-12 或者 JAN-DEC , - /
星期 1-7 或者 SUN-SAT , - ? / L C #
年(可选) 留空, 1970-2099 , - /
spring cron配置每几分钟怎么设置
什么是动态定时任务:是由客户制定生成的,服务端只知道该去执行什么任务,但任务的定时是不确定的(是由客户制定)。
}2.Quartz在Spring中动态设置cronTrigger方法一这样总不能修改配置文件每定制个定时任务就增加一个trigger吧,即便允许客户修改配置文件,但总需要重新启动web服务啊,研究了下Quartz在Spring中的动态定时,发现
中cronExpression是关键,如果可以动态设置cronExpression的值,也就说如果我们可以直接调用CronTriggerBean中设置cronExpression的方法,就可以顺利解决问题了。
熟悉1的朋友可以跳过不看,下面2、3是动态定时任务的具体实现。
1. Quartz在Spring中的简单配置
Spring配置文件:
在上面的配置中设定了
① targetMod: 指定需要定时执行scheduleInfoAction中的JobTest()方法
② concurrent:对于相同的JobDetail,当指定多个Trigger时, 很可能个job完成之前,第二个job就开始了。指定concurrent设为false,多个job不会并发运行,第二个job将不会在个job完成之前开始。
③ cronExpression:0/10 ?表示每10秒执行一次,具体可参考附表。
④ triggers:通过再添加其他的ref元素可在list中放置多个触发器。
scheduleInfoAction中的JobTest()方法
注意:此方法没有参数,如果scheduleInfoAction有两个方法JobTest()和JobTest(String argument),则spring只会去执行无参的JobTest().
public void JobTest() {
log.warn("uh oh, Job is scheduled !'" + "' Success...");
Spring配置文件:
scheduleInfoAction中的reScheduleJob ()方法及相关方法
① reScheduleJob读取数据库,获得自定义定时器调度时间():
private void reScheduleJob() throws SchedulerException, ParseException {
// 运行时可通过动态注入的scheduler得到trigger
CronTriggerBean trigger = (CronTriggerBean) scheduler.getTrigger(
"cronTrigger", Scheduler.DEFAULT_GROUP);
String dbCronExpression = getCronExpressionFromDB();
String originConExpression = trigger.getCronExpression();
// 如果相等,则表示用户并没有重新设定数据库中的任务时间,这种情况不需要重新rescheduleJob
if(!originConExpression.equalsIgnoreCase(dbCronExpression)){
trigger.setCronExpression(dbCronExpression);
scheduler.rescheduleJob("cronTrigger", Scheduler.DEFAULT_GROUP, trigger);
// executeJobDetail();
}② getCronExpressionFromDB():从数据库中获得dbCronExpression的具体代码,由于使用了scheduleInfoMar,所以要在定义相应的setter方法
private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.Id = '"+"1" + "'";
List scheduleList = scheduleInfoMar.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}③ 在spring配置文件的scheduleInfoAction配置了相应的property(scheduler/ scheduleInfoMar),要为其设置setter方法
private Scheduler scheduler;
// 设值注入,通过setter方法传入被调用者的实例scheduler
public void setScheduler(Scheduler scheduler) {
this.scheduler = scheduler;
}private ScheduleInfoMar scheduleInfoMar;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoMar
public void setScheduleInfoMar(ScheduleInfoMar scheduleInfoMar){
this.scheduleInfoMar = scheduleInfoMar;
}3. Quartz在Spring中动态设置cronTrigger方法二
在上面的2中我们可以看到,尽管已经可以动态进行rescheduleJob了,不过依然需要我们设置一个cronExpression,如果尝试一下拿掉spring配置中的
则容器(如tomcat)启动时会报错。
实际中我们希望tomcat启动时就可以直接去读数据库,拿到相应的dbCronExpression,然后定时执行一个job,而不希望配置初始的cronExpression ,观察下面的CronTriggerBean,考虑到cronExpression需要初始化,如果设定一个类InitializingCronTrigger继承CronTriggerBean,然后在这个类中做一些读取DB的初始化工作(设置cronExpression),问题就可以解决了。
Spring配置文件:
InitializingCronTrigger中的相关方法
注意:在注入scheduleInfoMar属性的时候,我们可以去读取DB任务时间(之所以放在setter方法中,是因为需要在设置scheduleInfoMar后进行getCronExpressionFromDB(),否则,也可以①②逻辑把放在类的构造函数中).
注意InitializingCronTrigger必须extends CronTriggerBean.
public class InitializingCronTrigger extends CronTriggerBean implements Serializable {
private ScheduleInfoMar scheduleInfoMar;
// 设值注入,通过setter方法传入被调用者的实例scheduleInfoMar
public void setScheduleInfoMar(ScheduleInfoMar scheduleInfoMar){
this.scheduleInfoMar = scheduleInfoMar;
// 因为在getCronExpressionFromDB使用到了scheduleInfoMar,所以
// 必须上一行代码设置scheduleInfoMar后进行getCronExpressionFromDB
// 因为extends CronTriggerBean ,此处调用父类方法初始化cronExpression
setCronExpression(cronExpression); // ②
}private String getCronExpressionFromDB(){
String sql="from ScheduleInfo scheduleInfo where 1=1 ";
sql=sql+" and scheduleInfo.Id = '"+"1" + "'";
List scheduleList = scheduleInfoMar.queryScheduleInListBySql(sql);
ScheduleInfo scheduleInfo = (ScheduleInfo)scheduleList.get(0);
String dbCronExpression = scheduleInfo.getCronExpression();
return dbCronExpression;
}……
}附表:
"0 15 10 ?" 每天上午10:15触发
"0 15 10 ? 2005" 2005年的每天上午10:15触发
"0 14 ?" 在每天下午2点到下午2:59期间的每1分钟触发
"0 0/5 14,18 ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发
"0 0-5 14 ?" 在每天下午2点到下午2:05期间的每1分钟触发
"0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发
"0 15 10 ? MON-FRI" 周一至周五的上午10:15触发
"0 15 10 15 ?" 每月15日上午10:15触发
"0 15 10 L ?" 每月一日的上午10:15触发
每隔5秒执行一次:/5 ?
每隔1分钟执行一次:0 /1 ?
每天23点执行一次:0 0 23 ?
每天凌晨1点执行一次:0 0 1 ?
每月1号凌晨1点执行一次:0 0 1 1 ?
每月一天23点执行一次:0 0 23 L ?
每周星期天凌晨1点实行一次:0 0 1 ? L
至于每个符号 看看例子就好了.很简单了.
cron表达式怎么设置每7天执行一次
在天(月)子表达式中,“L”表示一个月的一天cron 要说明是 linux 还是 ja等程序的。 因为起始值意思不一样,我就掉过坑里了。
linux环境下,定时任务的 cron ,0 1 /7 特别注意 值 是 分钟
ja等其他程序中,一般是 0 0 0 1/7 ? 个值是 秒。(意思是 每1日、7日、往后每7天的 0时0分0秒执行)
每29天
0/29"0 15 10 ? " 每天上午10:15触发
附常用执行频率:
0/1
每一分钟,一小时执行60次
?分钟,一小时执行1次
0/1
?每小时
从左到右依次是秒/分/时/一个月第几天/月/一周第几天
mysql中是不是nt定义的只能有一个
(1):表示匹配该域的任意值,如在Minutes域使用, 即表示每分钟都会触发。值得一提的是MySQL的调度器可以到每秒钟执行一"0 15 10 ? 6L" 每月的一个星期五上午10:15触发个任务,而作系统的任务(如:Linux下的CRON或Windows下的任务)只能到每分钟执行一次。
cron表达式 每周一次
首先要了解格式是什么意思:
分钟 小时 日 月 周 〔用户名〕 命令
每周执行一次,应该要确定时间的,比如是每周的星期1的8点
分钟 小时 日 月 周 〔用户名〕 命令
59 7 1 username /var/week
解释一下吧,月和日
写在cron全局配置文件里面就可以了。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。