技术解析

求助一个 crontab 的时间的写法
0
2021-06-16 13:04:05
idczone

我想要每隔 d 天 h 时 m 分 s 秒启动一次任务,参数均合法,我看了一些资料,写了*/s */m */h */d * ?
不用想就知道错了 0.0


https://crontab.guru/

crontab 是指定某个时间点运行,不是间隔多长时间运行,这种需求你得自己想办法实现

没办法,这个是定时器不是延时器。

crontab 有多种写法,有 5 个参数的,也有 6 个参数的,先看你使用的库使用的是哪一种写法

crontab 好像只支持到分钟级的时间粒度。
我推荐你另一个定时器:ofelia

可以利用 cronjob 每天 h 小时 m 分 s 秒运行,然后脚本里做计数确定是否到了 day 间隔

忘记上链接了: https://github.com/mcuadros/ofelia
ofelia 支持秒级时间粒度,以及丰富的 schedule 时间语法。
@hourly
@every
0,20,40 * * * *
等写法,但你不会 docker 的话,你可能需要花费点时间,研究怎么去安装他

把你的 d 天 h 时 m 分换算成 d*24*60+h*60+m=n 分,写成 */n * * * * 可以运行吗?秒就别想了

很抱歉前面给你列了一个错误的范例 0,20,40 * * * *
这可能会误导你,因为 ofelia 是秒级粒度,所以它应该有 6 挡参数,正确值应该是
0,20,40 * * * * *

crontab 或者说 cron 表达式,他是一个到达某个时间执行的规则而不是间隔多久执行的规则
https://tool.lu/crontab/ 这里可以校验并测试出表达式前几次的执行时间

确实,每隔多久运行并不是 crontab 干的事,多谢楼上各位,换个方案会更好。

man 5 crontab

或者更直接点,把间隔写进脚本,用 supervisord 之类的让其自启保持运行

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服