Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cron每2天出现一次故障,持续数月,共31天_Cron - Fatal编程技术网

Cron每2天出现一次故障,持续数月,共31天

Cron每2天出现一次故障,持续数月,共31天,cron,Cron,我正在尝试编写一个cron表达式,它严格地每两天触发一次。严格地说,我的意思是两个触发器之间的间隔应该始终是2天。这就是我所拥有的: 0 0 0 */2 * ? * 虽然这在大多数情况下都可以正常工作,但它会在31天内失败数月,因此它将在31日运行,然后在1日再次运行 我在一篇帖子上读到,没有办法绕过这个限制。但我只是想看看是否有人解决了这个问题。提前谢谢 我不认为你能用cron做到这一点。但是,调整cron命令的效果会很好: 0 0 0 * * [ <is my day odd?>

我正在尝试编写一个cron表达式,它严格地每两天触发一次。严格地说,我的意思是两个触发器之间的间隔应该始终是2天。这就是我所拥有的:

0 0 0 */2 * ? *
虽然这在大多数情况下都可以正常工作,但它会在31天内失败数月,因此它将在31日运行,然后在1日再次运行


我在一篇帖子上读到,没有办法绕过这个限制。但我只是想看看是否有人解决了这个问题。提前谢谢

我不认为你能用cron做到这一点。但是,调整cron命令的效果会很好:

0 0 0 * * [ <is my day odd?> ] && original_command
0**[]和原始命令(&U)
现在的问题是计算一天是否是奇数(或者偶数,这无关紧要)。我能找到的最好的是:
$($(日期+%s)/(60*60*24)%2))


它用Unix的epoch(01/01/1970 00:00:00)以来的秒数将其划分为若干天,并取其模2,输出1或0,这是
测试的不同有效输入。然而,日期是一个很难解决的问题,如果我没有忽略任何事情,我会感到惊讶。

我认为你不能用cron做到这一点。但是,调整cron命令的效果会很好:

0 0 0 * * [ <is my day odd?> ] && original_command
0**[]和原始命令(&U)
现在的问题是计算一天是否是奇数(或者偶数,这无关紧要)。我能找到的最好的是:
$($(日期+%s)/(60*60*24)%2))


它用Unix的epoch(01/01/1970 00:00:00)以来的秒数将其划分为若干天,并取其模2,输出1或0,这是
测试的不同有效输入。然而,日期是一个很难解决的问题,如果我没有忽略任何事情,我会感到惊讶。

每天运行它,并在文本文件/数据库/等中跟踪实际的最后运行日期如何?我投票关闭这个问题,因为它更适合or。@KenWhite fwiw-我认为解决这个问题的方法是将它编写到正在运行的作业中是cron,所以不是完全离题。您是否有额外的前导
0
?否则,
0
不是当月的有效日期。除前4栏外,
也可以出现在其他栏中吗?@DanCornilescu:看起来不错。我在这里测试它-如何每天运行它,并在文本文件/数据库/等中跟踪实际的最后运行日期?我投票关闭这个问题,因为它更适合or。@KenWhite fwiw-我认为解决这个问题的方法是将它脚本化到由cron运行的作业中,所以,不要完全脱离主题。您是否有多余的前导
0
?否则,
0
不是当月的有效日期。除前4栏外,
也可以出现在其他栏中吗?@DanCornilescu:看起来不错。我在这里测试-我没弄明白。我们不是在做两次单日支票吗?这有什么帮助?@mindreader不,您只需要在原始cron命令前面加上
[$($(日期+%s)/(60*60*24)%2))&&
。我的奇数检查可能比cron的一天中的一个月或一天中的一年更有效,因为它基于自某个特定日期(Unix的纪元)起的天数。正如我所说,我仍然不确定它是否完美。而且,你读心术做得很差;)我不明白。我们不是在做两次单日支票吗?这有什么帮助?@mindreader不,您只需要在原始cron命令前面加上
[$($(日期+%s)/(60*60*24)%2))&&
。我的奇数检查可能比cron的一天中的一个月或一天中的一年更有效,因为它基于自某个特定日期(Unix的纪元)起的天数。正如我所说,我仍然不确定它是否完美。而且,你读心术做得很差;)