关于Cron4jPlugin定时器的使用疑问?

定时器的表达式已经设置成:0/10 * * * *   

应该是从0分开始每隔10分钟就执行一次,如果项目是第10分钟的时候启动,则会在第20分钟定时器运行一次任务,是这样?

如上设置后我在日志文件中看到的是定时器每隔一个小时执行了一次任务。为何?

评论区

leomj

2017-04-06 09:19

JFinal

2017-04-06 10:32

cron4j 采用了与 linux cron 表达式一样的规则,只要会用这个表达式就可以了,具体的含义在手册中有详细的说明,下面是手册中的文档片段

cron 表达最多只允许五部分,每部分用空格分隔开来,这五部分从左到右依次表示分、时、天、月、周, 其具体规则如下:
1:分 :从 0 到 59
2:时 :从 0 到 23
3:天 :从 1 到 31,字母 L 可以表示月的最后一天
4:月 :从 1 到 12,可以别名: jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct","nov" and "dec"
5:周 :从 0 到 6, 0 表示周日, 6 表示周六,可以使用别名: "sun", "mon", "tue", "wed", "thu","fri" and "sat"

如上五部分的分、时、天、月、周又分别支持如下字符,其用法如下:
1:数字 n:表示一个具体的时间点,例如 5 * * * * 表示 5 分这个时间点时执行
2:逗号 , :表示指定多个数值,例如 3,5 * * * * 表示 3 和 5 分这两个时间点执行 http://www.jfinal.com
3:减号 -:表示范围,例如 1-3 * * * * 表示 1 分、 2 分再到 3 分这三个时间点执行
4: 星号 *:表示每一个时间点,例如 * * * * * 表示每分钟执行
5: 除号 /:表示指定一个值的增加幅度。例如 n/m 表示从 n 开始,每次增加 m 的时间点执行

JFinal

2017-04-06 10:35

你的项目用的是 0/10 * * * *,那么应该是从 0 分开始,每次增加 10 分钟的时间点执行,如果不正常,改成 0/1 以及 0/2 以及 0/3 去测试一下,数字改小有利于快速看到效果

单步调试一下,你的 0/10 * * * * 这个值是不是正确传递到了 Cron4jPlugin 之中,搞定后回来分享一下

leomj

2017-04-06 15:45

@JFinal 把值改为0/1则定时器分钟都执行,改成0/10却没有每十分钟去执行。奇怪在这。

leomj

2017-04-06 16:13

另外日志中看到的执行计划是每隔1小时执行了一次定时器,感觉很奇怪。

JFinal

2017-04-06 16:42

@leomj 改成 0/2 以及 0/3 去测试一下,找到问题原因后别忘了回来回复或分享给小伙伴们

leomj

2017-04-06 17:25

改成 */10就好了,*/10才是每隔10分钟执行一次,0/10是每个小时的第10分钟执行一次也就是说0/10 * * * *的写法和10 * * * *是一样的意思。

JFinal

2017-04-08 11:48

@leomj 感谢回来分享

热门反馈

扫码入社