我的crontab文件中有一个条目:
14 17 * * */2 python /home/pi/scripts/irrigate_5mins.py >/dev/null 2>&1
目的是每隔一天运行一次命令,这是手册页(man 5 crontab
)所说的*/2
。手册页中的实际报价为:
星号后也允许执行步骤,因此如果您想说``每两个小时'',只需使用``* / 2''
实际的行为是该命令以2、2、2、1、2、2、2、1等的重复模式运行。因此,例如,在三月/四月15日,17日,命令RAN 18日, 20日,22日,24日,25日,27日,29日,31日,月1日四月,第3,第5,第7,第8,第10,第12,其中,以粗体显示的日期是命令在前一天运行的日期。
所以我的问题是:为什么它表现得如此,是否有一种(简便的)方法可以使它达到预期的效果?
系统信息:
root@pi:~# uname -a
Linux pi 4.9.28+ #998 Mon May 15 16:50:35 BST 2017 armv6l GNU/Linux
root@pi:~# lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 8.0 (jessie)
Release: 8.0
Codename: jessie
系统连接到计时器会(每24小时进行一次硬重启)可能与您相关,也可能无关。
通过*/2
在“星期几”字段中指定,您可以在偶数天中运行。一周中的几天甚至是星期一,星期三,星期五和星期日。(实际上,这是奇怪的日子,嗯,仍然...)
如果要以稍微更固定的时间间隔运行作业,请改用“月日”字段(第三个字段)。请注意,在天数为奇数的月份中,这将导致作业在下个月开始时跳过一天:...,28、30(不位于31日,而不是1日),2、4日, ETC。
您可以通过添加几个月甚至两天的计划和一个单独的几个月奇数天的计划来解决此问题(尽管我还没有真正考虑过这一点,以了解是否可以使其正确匹配)。
另一种可能性是让工作时间表本身使用at
而不是使用cron
。这肯定是一个更“骇人听闻”的解决方案,并且如果作业在开始运行到成功地在两天内自行重新安排计划之间异常终止,或者如果系统在下一次计划的运行中发生故障,可能会失败。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句