我有一个 24x7 每分钟运行一次的 cronjob。我希望它在每天晚上 10 点到凌晨 12 点之间停止,因为那是我的维护期。我有办法做到这一点吗?
答案1
换句话说,您希望每天运行它xx:yy, 在哪里xx是 0 到 21 之间的任意时间,并且yy是任意一分钟。该时间将从 00:00 开始,到 21:59 结束。
所以:
* 0-21 * * * command...
如果您已经想在 21:30 停止,则需要为该时间制定单独的规则:
* 0-20 * * * command...
0-29 21 * * * command...
您可以轻松地通过这种方式做到这一点,因为这里的时间范围非常简单。如果您想要按照更复杂的时间表运行,例如每 32 分钟运行一次(每天正好 45 次),那么时间将几乎随机地分布在几个小时内,并且您几乎每个小时都需要一个规则。仅以编程方式查看时间并进行计算会更简单。
此外,将工作日与日历日期结合起来(例如执行经典的“每月的第一个星期日”)要困难得多,并且通常需要编写一些脚本。 (这基本上就是评论中链接的问题是关于。)在很大程度上,这是由于月份和星期几字段的crontab
工作方式造成的:不需要像其他情况那样要求两者匹配,这足以满足任何一个匹配,因此不可能将时间表分解为较小的crontab
规则并以此为基础进行构建。