"* * * */7 * ?"
请问这样是否是每七天执行一次呢?
1
airfling 2019-09-25 11:15:51 +08:00
那你为啥不直接直接设置为每周几执行一次
|
2
qian88199496 OP @airfling #1 因为想在启动的时候直接运行啊,相隔一周执行一次
|
3
airfling 2019-09-25 11:23:56 +08:00
@qian88199496 那你这样写就是每次启动都会执行一遍,如果出现上线问题,重启什么的就是每次重启都执行,这样写是没问题,不过不利于分布式部署和突发情况
|
4
qian88199496 OP 就是为了收集分布式部署, 服务器信息和应用信息,才想要这样设置
|
5
fuxinya 2019-09-25 11:48:57 +08:00 via Android
百度在线 cron 表达式
|
6
k9990009 2019-09-25 12:47:12 +08:00
你每天都跑,程序里判断要不要执行,不就好了
|
7
diyhi 2019-09-25 13:02:58 +08:00
|
8
rancc 2019-09-25 13:06:17 +08:00
Expression Meaning
"0 0 12 * * ?" Fire at 12pm (noon) every day "0 15 10 ? * *" Fire at 10:15am every day "0 15 10 * * ?" Fire at 10:15am every day "0 15 10 * * ? *" Fire at 10:15am every day "0 15 10 * * ? 2005" Fire at 10:15am every day during the year 2005 "0 * 14 * * ?" Fire every minute starting at 2pm and ending at 2:59pm, every day "0 0/5 14 * * ?" Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day "0 0/5 14,18 * * ?" Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day "0 0-5 14 * * ?" Fire every minute starting at 2pm and ending at 2:05pm, every day "0 10,44 14 ? 3 WED" Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. "0 15 10 ? * MON-FRI" Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday "0 15 10 15 * ?" Fire at 10:15am on the 15th day of every month "0 15 10 L * ?" Fire at 10:15am on the last day of every month "0 15 10 ? * 6L" Fire at 10:15am on the last Friday of every month "0 15 10 ? * 6L" Fire at 10:15am on the last Friday of every month "0 15 10 ? * 6L 2002-2005" Fire at 10:15am on every last Friday of every month during the years 2002, 2003, 2004 and 2005 "0 15 10 ? * 6#3" Fire at 10:15am on the third Friday of every month Pay attention to the effects of '?' and '*' in the day-of-week and day-of-month fields! |
9
rancc 2019-09-25 13:07:32 +08:00
接上条,所以需要指定时间。哪一分那一秒都要指定
|
10
zifangsky 2019-09-25 16:15:31 +08:00
你找一个在线 在线 Cron 表达式 的工具验证一下不就明白了吗?
比如: http://cron.qqe2.com/ |
11
yesterdaysun 2019-09-25 16:23:47 +08:00
就像上面说的, 你必须指定时分秒, 否则就是一秒钟运行一次, 你可以写个测试看一下执行时间就知道了, 网上有些模拟器和 Quartz 的语法不太一样, 而且 Quartz 语法不同版本也不一样, 跑测试最直接了:
```java @Test public void test() throws ParseException { CronTrigger cronTrigger = new CronTrigger("test", "test", "* * * */7 * ?"); Date nextFireTime = new Date(); for (int i = 0; i < 10; i++) { nextFireTime = cronTrigger.getFireTimeAfter(nextFireTime); String result = DateFormatUtils.format(nextFireTime, "yyyy-MM-dd HH:mm:ss"); System.out.println(result); } } ``` |