首页 新闻 会员 周边 捐助

为什么cron表达式执行时间出现错误

0
悬赏园豆:5 [待解决问题]

在项目中使用@Scheduled声明,cron表达式的值为"0 0 0 * * ?",结果在2017-10-07 00:00:00,000执行,但是接下来的执行时间确为2017-10-07-23:59:59,895,很是迷惑,求高手解答。

附图:

望山凤的主页 望山凤 | 初学一级 | 园豆:197
提问于:2017-10-17 18:45
< >
分享
所有回答(3)
0

你换成 1 0 0 * * ? 呢?

Daniel Cai | 园豆:10424 (专家六级) | 2017-10-17 19:08

目前的解决方案就是把cron表达式修改为"0 30 0 * * ?",就是想知道具体原因

支持(0) 反对(0) 望山凤 | 园豆:197 (初学一级) | 2017-10-18 09:46

@望山凤: 不太清楚,按道理而言linux的时间精度偏差应该小于1ms,你看下crontab中有没有ntpdate之类的玩意在校对时间。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-10-18 09:49

@Daniel Cai: ;linux服务器确实在crontab中ntpdate,有影响吗?

支持(0) 反对(0) 望山凤 | 园豆:197 (初学一级) | 2017-10-18 11:13

@望山凤: 它的执行时间配置是什么呢?

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-10-18 11:19

@Daniel Cai: 

 0 0 * * * rdate -s puppetmaster 
支持(0) 反对(0) 望山凤 | 园豆:197 (初学一级) | 2017-10-18 11:31

@Daniel Cai: 时间同步服务也是在0点,是不是可能出现时间抖动的情况

支持(0) 反对(0) 望山凤 | 园豆:197 (初学一级) | 2017-10-18 11:43

@望山凤: 可能吧,最好你错开这个时间点。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-10-18 11:46
0

楼上正解,你这个是要每天凌晨零点执行,但是有时候确实会有毫秒级的误差,操作系统在执行多个任务时是不可能保证百分百无误差定时执行某个任务的。

海之殇 | 园豆:500 (菜鸟二级) | 2017-10-17 22:19
0

百分百无误差是不可能的.

吴瑞祥 | 园豆:29449 (高人七级) | 2017-10-18 10:11

延后可以理解,但是提前觉着有点诡异

支持(0) 反对(0) 望山凤 | 园豆:197 (初学一级) | 2017-10-18 11:08

@望山凤: 所以每天处理的定时任务都是定到1点的.

误差从来都是左右误差.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2017-10-18 11:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册