求助一个 crontab 的时间的写法

2020-07-22 17:23:43 +08:00
 zjcnc

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/692249

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX