linux下制定crontab定时任务每天8点到20点每隔两小时执行一次

0 8,10,12,14,16,18,20 8 6. 创建一个新的crontab文件/bin/sh /back/temp.sh

cron每秒执行一次_cron30秒执行一次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> 如果是周期性地执行,比如每隔20分钟执行一次

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

解释一下吧,月和日0/10 ?写成表示不管是哪一个月哪一天,只要周1的7点59分就开始执行,之所以不写8点整,是考虑到系统执行程序是有延迟时间的。

写在cron全局配置文件里面就可以了。