我是Java的新手.作为我的第一个项目,我将使用cron作业调度程序.我想要一些关于日程安排的澄清.我有一个每小时运行一次的代码.
CronTrigger ct = new CronTrigger("cronTrigger", "group2", "0 1/0 * * * ?");
Run Code Online (Sandbox Code Playgroud)
我已经阅读了有关日程安排的文件,但我感到困惑
在一份文件中,我已阅读如下所示
("0 0 * * * ?")
Run Code Online (Sandbox Code Playgroud)
在一些文件中我读到第1个表示分钟2小时等.
任何人都可以解释一下这个(0 1/0***?)以及它意味着什么(1/0)?
我想每六个小时就找一份工作.
如果我这样给(0 */6 * * * ?)它是否会每六个小时运行一次?
如果你签入crontab.guru,这两个几乎是等价的:
* * * * *
* 1/0 * * *
Run Code Online (Sandbox Code Playgroud)
这是因为X/Y意味着:从X每一个开始Y.也就是说,所有X + Yn.所以,如果你说它*/2会每2个小时做一次.
在这种情况下:1/0表示"从1开始,每小时",因此匹配从1到23,而*匹配从0到23.
根据您的问题,*/6每6小时匹配一次,因此它将在0,6,12和18小时精确运行.
关于你关于第6个参数?做什么的问题,我读到:
我相信这是由CronExpression类处理的,它有六个常量:分钟,小时,日,月,工作日,年.Cron使用分钟,小时,日,月,工作日.年度()方法的年份的添加似乎是额外*的原因.
所以不要使用通用语法
+---------------- minute (0 - 59)
| +------------- hour (0 - 23)
| | +---------- day of month (1 - 31)
| | | +------- month (1 - 12)
| | | | +---- day of week (0 - 6) (Sunday=0 or 7)
| | | | |
* * * * * command to be executed
Run Code Online (Sandbox Code Playgroud)
有了Java,你就拥有了
+----------------- minute (0 - 59)
| +-------------- hour (0 - 23)
| | +----------- day of month (1 - 31)
| | | +-------- month (1 - 12)
| | | | +----- day of week (0 - 6) (Sunday=0 or 7)
# | | | | | +-- year <-- this is extra !!
| | | | | |
* * * * * * command to be executed
Run Code Online (Sandbox Code Playgroud)
最后一个参数也可以有一个值,但在您的情况下它指定?.至于我在crontab.guru中读到的内容,它意味着:
? 空白(非标准)
因此,我会使用5个常用参数正常安排它,然后?在最后添加,以便它在所有年份运行.
| 归档时间: |
|
| 查看次数: |
2243 次 |
| 最近记录: |