Cron 表达式的一些困惑

2023-06-23 11:19:38 +08:00
 Koril

问题一

Cron 表达式中的 day of monthday of week 到底能不能同时存在?

有说可以同时存在的:

  1. 工具网站: https://crontab.guru 我在这个网站输入23 22 3 11 3,它显示解析结果是:“At 22:23 on day-of-month 3 and on Wednesday in November.”

  2. Ubuntu 的 cron 手册页: https://manpages.ubuntu.com/manpages/impish/en/man5/crontab.5.html 里面提到一句话:For example, 30 4 1,15 * 5 would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.

也有说,不可以同时存在的:

  1. 工具网站: https://cron.qqe2.com/ 我在这个网站输入 0 23 22 3 11 3,它显示解析结果是:不支持同时指定星期几和几月参数。

  2. 一些博客,比如这篇: https://blog.csdn.net/qq_42319677/article/details/123183028 里面提到:当日期或星期域其中之一被指定了值以后,为了避免冲突,需要将另一个域的值设为?。


问题二

Cron 表达式的每个参数的取值范围 秒数,分钟,小时都没什么争议,主要是 monthday of week 这两个参数。

month

有说 0-11 的,也有说 1-12 的。

day of week

有说 0-6 ( 0 表示 周日)的,也有说 1-7 的,还有说 0-7 ( 0 和 7 都表示周日)的。

针对这两个参数不一致,写缩写(比如:月份的 jan,feb,mar,apr ,星期的 sun,mon,tue,wed,thu,fri,sat )是不是一个最好的方案呢?


Cron 怎么有点像正则一样,不同的语言和系统还有不同的标准?请教下各位大佬,感谢!

1057 次点击
所在节点    问与答
2 条回复
zhlxsh
2023-06-23 11:58:26 +08:00
问题二:我记得星期里面,0 和 7 都是周日,月份可能也一样
julyclyde
2023-06-24 12:41:19 +08:00
为什么不看 man 呢

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

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

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

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

© 2021 V2EX