一个永远不会执行的 cron 作业
Posted
技术标签:
【中文标题】一个永远不会执行的 cron 作业【英文标题】:A cron job that will never execute 【发布时间】:2012-01-09 14:12:48 【问题描述】:有没有办法创建一个完全不运行作业的 cron 表达式?
我想用这个表达方式:
0 0 0 1 1 ? 3099
...这实际上可以完成这项工作,因为它将在 3099 年运行,但是有没有更清洁的方法呢?
【问题讨论】:
不,如果我评论或删除它,我的框架会抛出部署错误。 :-( 这是哪个框架? 你可以给出过去的某一年。 0 0 0 1 1 ? 1970 【参考方案1】:如果即使在遥远的将来您仍然在寻找强大的东西,请尝试https://***.com/a/13938099/1601531,我建议在不打算执行的 crontab 条目中使用 February 31st。
0 0 5 31 2 ?
【讨论】:
在 Spring Boot 的 cron 解释器上,这会导致Invalid cron expression "0 0 5 31 2 *" led to runaway search for next trigger
对我不起作用,但 2 月 29 日工作“0 0 0 29 2 ?”
你知道 2 月 29 日会执行几年,对吧?
使用spring boot,你可以用破折号“-”禁用cron作业,***.com/questions/36403671/…
Microsoft.Azure.WebJobs.Extensions: The schedule expression '0 0 5 31 2 ?' was not recognized as a valid cron expression or timespan string.
【参考方案2】:
我需要一个有效的 cron 计划(?
语法在我的系统中不起作用)来解决实际日期,但要有效地“从不”。我目前最好的解决方案是选择最近的闰年,看看 2 月 29 日是哪一天。 2016 年 2 月 29 日是星期一,因此目前距离下一个 2 月 29 日星期一最远。
0 0 29 2 1
产生接下来的 5 个触发器:
02/29/2044 00:00:00Z
02/29/2072 00:00:00Z
02/29/2112 00:00:00Z
02/29/2140 00:00:00Z
02/29/2168 00:00:00Z
不完美,但它会做。
【讨论】:
请不要这样做。这就是我们最终解决 Y2K 错误的原因。 同意这种方法不应该在生产环境中使用 - 就我的目的而言,生产使用了正常的时间表,但开发/测试环境使用了这种 hack,因此代码从未真正触发过。虽然我认为你与 Y2K 漏洞的比较有点过于戏剧化,不是吗? 很公平,但我认为没有这种洞察力的人来 SO 寻求指导可能不明白为什么或不应该在生产中使用它。至于千年虫……它是由一位或多位开发人员认为千年虫是遥不可及的未来,他们“现在”不必担心它。他们可能也没有,但我们做到了。 ;) 对于 Spring 计划,这会导致Invalid cron expression "0 0 3 29 2 1" led to runaway search for next trigger
错误消息。不过,最后一项的?
被接受(但每 4 年运行一次)。
这很聪明! :D【参考方案3】:
我为您的问题创建了一个重复的(click here to see),并同意您最初的建议。经过测试,Quartz 似乎永远不会执行年份超过 2300 的 cron 表达式。
【讨论】:
【参考方案4】:打开您的 crontab 文件并删除条目将是适当的方法。或者您也可以将 cronjob 调用的可执行文件 simlink 到一个空的 shell 脚本。
告诉我们更多关于你的设置,然后我们会看到......
【讨论】:
我直接使用其中一个框架配置文件中的表达式...显然我不能放#符号:-(。如果我这样做我的部署将失败。 对我来说没有多大意义,你能详细说明一下吗? 设置是,我在 xml 文件中使用了一个 cron 表达式,这个 xml 文件将用于我的一个框架中。我没有直接使用 shell 脚本执行 cron 作业。注释掉——在前面加上#
符号。非常有用,尤其是如果您担心到 3099 年会忘记您的更改。
另一种可能是让它执行虚拟命令,例如true rm -rf /
。
【讨论】:
我直接使用其中一个框架配置文件中的表达式...显然我不能放#符号:-(。如果我这样做我的部署将失败 我添加了另一种可能性。也就是说,这不是你的错。 我猜有些人喜欢生活在边缘...rm -rf /
因为rm -rf /
在答案中投反对票以上是关于一个永远不会执行的 cron 作业的主要内容,如果未能解决你的问题,请参考以下文章