我想要每隔 d 天 h 时 m 分 s 秒启动一次任务,参数均合法,我看了一些资料,写了*/s */m */h */d * ?
不用想就知道错了 0.0
1
xd547 2020-07-22 17:27:50 +08:00
https://crontab.guru/
|
2
linvon 2020-07-22 17:30:09 +08:00
crontab 是指定某个时间点运行,不是间隔多长时间运行,这种需求你得自己想办法实现
|
3
zarte 2020-07-22 17:32:55 +08:00
没办法,这个是定时器不是延时器。
|
4
lovedebug 2020-07-22 17:35:23 +08:00
crontab 有多种写法,有 5 个参数的,也有 6 个参数的,先看你使用的库使用的是哪一种写法
|
5
brader 2020-07-22 17:36:00 +08:00
crontab 好像只支持到分钟级的时间粒度。
我推荐你另一个定时器:ofelia |
6
DoctorCat 2020-07-22 17:36:29 +08:00
可以利用 cronjob 每天 h 小时 m 分 s 秒运行,然后脚本里做计数确定是否到了 day 间隔
|
7
brader 2020-07-22 17:39:31 +08:00
忘记上链接了: https://github.com/mcuadros/ofelia
ofelia 支持秒级时间粒度,以及丰富的 schedule 时间语法。 @hourly @every 0,20,40 * * * * 等写法,但你不会 docker 的话,你可能需要花费点时间,研究怎么去安装他 |
8
wangritian 2020-07-22 17:41:18 +08:00
把你的 d 天 h 时 m 分换算成 d*24*60+h*60+m=n 分,写成 */n * * * * 可以运行吗?秒就别想了
|
9
brader 2020-07-22 17:44:10 +08:00
很抱歉前面给你列了一个错误的范例 0,20,40 * * * *
这可能会误导你,因为 ofelia 是秒级粒度,所以它应该有 6 挡参数,正确值应该是 0,20,40 * * * * * |
10
wysnylc 2020-07-22 18:23:19 +08:00
crontab 或者说 cron 表达式,他是一个到达某个时间执行的规则而不是间隔多久执行的规则
https://tool.lu/crontab/ 这里可以校验并测试出表达式前几次的执行时间 |
11
zjcnc OP 确实,每隔多久运行并不是 crontab 干的事,多谢楼上各位,换个方案会更好。
|
12
ChanKc 2020-07-22 23:22:32 +08:00
man 5 crontab
|