精华内容
下载资源
问答
  • 因为玩cron有一段时间,长久以来困扰我的一个问题: 怎么用cron实现40分钟执行一次? 之前用了几种实现方案:0 0/40 * * * ? 0 40-40 * * * ? 0 */40 * * * ? 但是都不能实现。 一次想到在技术群里问一下,然后一个...

    因为玩cron有一段时间,长久以来困扰我的一个问题: 怎么用cron实现40分钟执行一次?
    之前用了几种实现方案:
    0 0/40 * * * ?
    0 40-40 * * * ? 
    0 */40 * * * ?

    但是都不能实现。

    一次想到在技术群里问一下,然后一个大神给了一个链接:

    https://stackoverflow.com/questions/8181949/how-do-set-cron-to-run-my-script-every-40mins-25mins

    原来早就有人遇到过,这种问题需要使用组合表达式。
    文中给出了两个表达式:
    20 1,3,5,7,9,11,13,15,17,19,21,23 * * * ?
    0,40 */2 * * * ?

    最终总结出的表达式:
    0 0,40 0/2 * * ? *
    0 20 1,3,5,7,9,11,13,15,17,19,21,23 * * ?

    按照上面的任务执行下来是这个样子的:
    12:40  -->走第1个表达式
    13:20  -->走第2个表达式
    14:00  -->走第1个表达式

    14:40  -->走第1个表达式
    15:20  -->走第2个表达式
    16:00  -->走第1个表达式

    至此问题解决!

     

    上面大神给出的链接中还有一个是关于25分钟执行一次的,也会遇到这种无法一个cron表达式处理的问题,感兴趣的可以进链接看看。

    那么,如果是35分钟,45分钟呢?

    我写了一段js代码,用于判断一个时间间隔需要多少个表达式,有需要的可以拿去:

    // js判断n分钟执行的循环次数,跨越的小时数(每小时单独一个表达式)
    var basedate = new Date('2020/09/12 00:00');
    var date = new Date('2020/09/12 00:00');
    console.log("date: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
    var num = 45; //时间间隔:分钟
    for (var i = 1; i <= 121; i++) {
        date.setMinutes(date.getMinutes() + num);
        console.log("date: " + date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
        if (date.getMinutes() == basedate.getMinutes()) {
            console.log("---如果是每隔" + num +"分钟执行一次,循环第" + i + "次进入重新循环,跨越" + (date.getHours() - basedate.getHours()) + "个小时,所以需要" + (date.getHours() - basedate.getHours()) + "个表达式才能完成---");
            break;
        }
    }
    

     

     

     

    展开全文
  • 常用表达式例子    0/2 * * * * ?表示2秒 执行任务 0 0/2 * * * ?表示2分钟 执行任务 ... 表示2小时 执行任务... 6L 2002-2006 表示2002-2006年的个月的最后个星期上午10:15执行作 0 0 10,14,16 * *...

    常用表达式例子

      

    0/2 * * * * ?   表示每2秒 执行任务(数值不能超过60,如超过好像会按最大上限执行每60秒执行一次,即最多每60秒执行一次,错误表达0/120 * * * * ?,并不会每120秒,执行一次,如需要请转化为分钟)
    
    0 0/2 * * * ?    表示每2分钟 (数值不能超过60,缘由同上)
    
    0 0 0/2 * * ?    表示每2小时 执行任务(数值不能超过24,缘由同上)
    
    0 0 2 1 * ?   表示在每月的1日的凌晨2点调整任务
    
    0 15 10 ? * MON-FRI   表示周一到周五每天上午10:15执行作业
    
    0 15 10 ? 6L 2002-2006   表示2002-2006年的每个月的最后一个星期五上午10:15执行作
    
    0 0 10,14,16 * * ?   每天上午10点,下午2点,4点 
    
    0 0/30 9-17 * * ?   朝九晚五工作时间内每半小时 
    
    0 0 12 ? * WED    表示每个星期三中午12点 (星期一 MON;星期二 TUES;星期三 WED;星期四 THUR.;星期五 FRI;星期六 SAT.;星期日 SUN)
    
    14 35 15 ? * 1,2,3,4,5,6,7  表示每周日,周一,周二,周三,周四,周四,周五,周六的15点35分14秒触发 (上一条,如果不想用英文,上面一条的可以用数字表示,注意周日认为是一周的第一天)
    
    0 0 12 * * ?   每天中午12点触发 
    
    0 15 10 ? * *    每天上午10:15触发 
    
    0 15 10 * * ?     每天上午10:15触发 
    
    0 15 10 * * ?    每天上午10:15触发 
    
    0 15 10 * * ? 2005    2005年的每天上午10:15触发 
    
    0 * 14 * * ?     在每天下午2点到下午2:59期间的每1分钟触发 
    
    0 0/5 14 * * ?    在每天下午2点到下午2:55期间的每5分钟触发 
    
    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触发 
    
    0 15 10 ? * 6L    每月的最后一个星期五上午10:15触发 
    
    0 15 10 ? * 6L 2002-2005   2002年至2005年的每月的最后一个星期五上午10:15触发 
    
    0 15 10 ? * 6#3   每月的第三个星期五上午10:15触发

    展开全文
  • 注:不涉及日历(不指定某月\天(周几)等),使用:Simple Trigger(测试代码粘贴在最后) ...隔90分钟执行一次 90*2= 180 = 3个小时 需要添加2个cron,间隔3小时 表达式: cron1 0 30 1/3 * * ? (1.30,4.30,7.30,,,,) c...

    注:不涉及日历(不指定某月\天(周几)等),使用:Simple Trigger(测试代码粘贴在最后)

    比如定时任务的需求:间隔 多少秒/分/时( 每隔99秒,每隔100分钟执行等)

     

    每隔90分钟执行一次 
        90*2= 180 = 3个小时
       需要添加2个cron,间隔3小时

    表达式:
    cron1 0 30 1/3 * * ?   (1.30,4.30,7.30,,,,)
    cron2 0 0  0/3 * * ?   (3.00,6.00,9.00,,,,)

    每隔100分钟

        100*3= 300 = 5个小时 
        需要添加3个cron,间隔5小时;

    cron1 0 40 1/5 * * ?   (1.40,6.40,11.40,,,)
    cron2 0 20 3/5 * * ?   (3.20,8.20,13.20,,,,)
    cron2 0 0  5/5 * * ?   (5.00,10.00,15.00)

    每隔2个半小时执行一次 
        150*2= 300 = 5个小时
       需要添加2个cron,间隔5小时

    表达式:
    cron1 0 30 2/5 * * ?   (2.30,7.30,12.30,,,,)
    cron2 0 0  0/5 * * ?   (5.00,10.00,15.00,,,,)

     

    受其他博文启发,一个定时任务实现不了,那这个任务,就添加多个触发时间,来实现;

    需求1:从0点开始,每隔2个半小时,执行一次
    思路记录:
     1.先列出,我们预期的执行时间:

           2.30,5.00,7.30,10.00,12.30,15:00

    2.找规律:我们知道间隔 整数(1,2,3,,,)个小时的cron表达式;根据此前提,找间隔 整数个小时 时间的规律

    3.规律结果

    (2.30,7.30,12.30,,,,)       两点半开始,间隔5小时    那么此表达式==>0 30 2/5 * * ?

    (5.00,10.00,15.00,,,,)      0点开始,间隔5小时        那么此表达式==> 0  0/5 * * ?

    需求2:在指定时间t后,启动定时任务a,

          可以采用:.再添加一个执行定时任务,动态添加那要求任务a,在那指定的时间t开始执行一次,有且只调用一次

    总结:间隔 n 个小时,执行一次

                  1.找出n和60的最小公倍数:gbs;

                  2.gbs除60=间隔时间tt       (tt<23?)

                 3.gbs除n=cron表达式个数

    附加表达式在线测试网站:  http://cron.qqe2.com/ 

    注意:粘贴我们自己写的表达cron表达式,查看运行结果时,得核对一下表达式是否被修改;我就遇到  0/3 变===>0-3

     

    Simple Trigger:在具体的时间点执行一次,或者在具体的时间点执行,并且以指定的间隔重复执行若干次

    package com.yqy.quartz;
    
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.concurrent.TimeUnit;
    
    import org.quartz.Job;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.SchedulerFactory;
    import org.quartz.SimpleScheduleBuilder;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.impl.StdSchedulerFactory;
    
    public class SimpleJobTest implements Job{
    	
        public static void main(String[] args) throws SchedulerException, InterruptedException {
            // 1、创建调度器Scheduler
            SchedulerFactory schedulerFactory = new StdSchedulerFactory();
            Scheduler scheduler = schedulerFactory.getScheduler();
            // 2、创建JobDetail实例,并与需要执行的job类绑定(Job执行内容),测试:所以我直接写在了本类
            JobDetail jobDetail = JobBuilder.newJob(SimpleJobTest.class)
                                            .withIdentity("job1", "group1").build();
            // 3、构建Trigger实例,每隔100s执行一次
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "triggerGroup1")
                    .startNow()//立即生效
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(100)//每隔100s执行一次
    //                .withIntervalInMinutes(100)//每隔100分钟执行一次
                    .repeatForever()).build();//一直执行
    
            //4、执行
            scheduler.scheduleJob(jobDetail, trigger);
            System.out.println("--------scheduler start ! ------------");
            scheduler.start();
            //睡眠
    //        TimeUnit.MINUTES.sleep(1);//睡眠1分钟
    //        scheduler.shutdown();
    //        System.out.println("--------scheduler shutdown ! ------------");
        }
        //执行某任务
         @Override
         public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
             String printTime = new SimpleDateFormat("yy-MM-dd HH:mm:ss").format(new Date());
             System.out.println("任务执行时间:"+printTime);
         }
    }
    //更多SimpleTrigger使用请查看:  https://www.w3cschool.cn/quartz_doc/quartz_doc-67a52d1f.html
    

     

    展开全文
  • Cron表达式范例: ... 5执行一次:*/5 * * * * ? 隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 月1号凌晨1点执行一次:0 0 1 1 * ? ...

    Cron表达式范例:

                 每隔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
    
                 在26分、29分、33分执行一次:0 26,29,33 * * * ?
    
                 每天的0点、13点、18点、21点都执行一次:0 0 0,13,18,21 * * ?


    欢迎关注微信公众号“Java面试达人”,(id:javasuperman),收看更多精彩内容

     

    展开全文
  • Cron表达式每半个小时执行一次

    万次阅读 2019-10-29 10:07:13
     2019-06-21 09:00:00 2019-06-21 09:30:00 2019-06-21 10:00:00 2019-06-21 10:30:00 2019-06-21 11:00:00 Cron表达式验证( Cron表达式验证网址),图示如下: 到此 Cron表达式每半个小时执行一次介绍完成。
  • 5执行一次:*/5 * * * * ? 隔1分钟执行一次:0 */1 * * * ? 每天23点执行一次:0 0 23 * * ? 每天凌晨1点执行一次:0 0 1 * * ? 月1号凌晨1点执行一次:0 0 1 1 * ? 月最后一天23点执行一次...
  • cron每小时执行一次表达式

    千次阅读 2021-03-07 11:18:25
    cron每小时执行一次表达式 常用表达式例子 (1)0/2 * * * * ? 表示2秒 执行任务   (1)0 0/2 * * * ? 表示2分钟 执行任务   (1)0 0 2 1 * ? 表示在月的1日的凌晨2点调整任务   (2)0 15 ...
  • java cron 100分钟执行一次

    万次阅读 2019-05-31 16:11:27
    100分钟执行一次 cron表达式: 0 40 0/2 * * ? 补充点信息: 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日 1-31 , - * ? / L W C 月 1-12 or JAN-DEC , - * / 周几 1-7 or SUN-SAT , -...
  • PHP Cron表达式解析器PHP cron表达式解析器可以解析CRON表达式,确定是否应运行,计算表达式的下个运行日期以及计算表达式的上个运行日期。 您可以使用PHP Cron Expression Parser。注意:该分叉已被弃用,开发...
  • cron表达式每天整点执行一次的问题

    万次阅读 2020-11-13 10:21:42
    然后隔天去看日志,发现,从10点0分0秒开始,执行一次, 执行了3600次。然后才发现cron表达式配置错了,应该是 0 0 10 * * ?,这才是每天上午10点执行一次。幸亏是没有数据可以发短息,不然我要跑路了。 切记...
  • cron表达式每隔90分钟

    万次阅读 2019-09-16 15:01:29
    最近项目开发中,遇到隔90分钟,获取一次数据并更新保存。 百度了一堆,找到个靠谱的。 分成2类触发规则来写,可以解决。 /** * 定时任务:隔90秒获取并更新 */ @Scheduled(cron = “0 0/3 * * * ?”) @...
  • 2.月10号9点15分钟执行任务 0 15 9 10 * ? 其它规则附录表 表示式 说明0 0 12 * * ? 每天12点运行0 15 10 ? * * 每天10:15运行0 15 10 * * ? 每天10:15运行0 15 10 * * ? * 每天10:15运行0 15 10 * * ? ...
  • spring定时器cron表达式生成
  • cron 表达式 1小时30分钟执行一次

    万次阅读 热门讨论 2018-01-05 15:42:51
    cron表达式: 0 30 0/1 * * ? 服了百度的不靠谱搜索,自己本来想懒省事,结果还是靠自己。 谢谢c友指正 。
  • cron表达式:我想表达:1.每天的3:10到6:40隔20分钟执行一次,2.从3:10开始隔20分钟执行一次,但执行20次,这两个cron表达式该怎么写呢
  • quartz Cron表达式一分钟教程

    千次阅读 2018-04-17 12:13:39
    CronTriggerCronTriggers...CronTrigger,你可以指定触发的时间表如“星期中午”,或“个工作日9:30时”,甚至“每5分钟一班9:00和10:00逢星期上午,星期三星期“。即便如此,SimpleTrigger一样,CronT...
  • Quartz的cron表达式

    2017-07-19 17:10:25
    Quartz的cron表达式。 Spring 定时任务@Scheduled cron表达式详解
  • 定时任务只执行一次cron表达式

    万次阅读 2019-06-27 10:48:04
    执行一次的定时任务 红色框里面的为cron表达式,从左往右分别为秒/分/时/日/月/年 具体是那一天执行一次就不用加(?...cron表达式这样写就可以了,只会执行一次,然后就不会再执行了。 ...
  • 如果你是在校生,你应该趁着在学校的时间夯实基础(比如计算机系统、算法、编译原理等等)不要动不动去搞什么项目,你也搞不出个让面试官很满意的项目出来,所以根本没必要在项目上面浪费太多的时间。 如果你觉得...
  • Quartz Cron表达式生成器这个是个用于前端生成Cron表达式个js
  • 下面小编就为大家带来一篇crontab10秒执行一次的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,868
精华内容 8,747
关键字:

cron表达式每5分钟执行一次