![每天安排 python 脚本,在特定时间之间,每 X 分钟](https://linux22.com/image/151029/%E6%AF%8F%E5%A4%A9%E5%AE%89%E6%8E%92%20python%20%E8%84%9A%E6%9C%AC%EF%BC%8C%E5%9C%A8%E7%89%B9%E5%AE%9A%E6%97%B6%E9%97%B4%E4%B9%8B%E9%97%B4%EF%BC%8C%E6%AF%8F%20X%20%E5%88%86%E9%92%9F.png)
我的 RaspberryPi 上有一个 python 脚本,我想在这些时间运行它:
- 工作日下午 4:30 后至 00:00 每 30 分钟一班
- 周末,上午 8:00 后至 00:00,每 60 分钟一班
我知道如何用 Cron 每天安排它,
30 16 * * 1-5 /mnt/myHDD/myscript.py
但不知道如何让它每 X 分钟运行一次,直到Y时间。
我想每 30 分钟跑一次,我这样做对吗?但如何从 16:30 到第二天 02:00 每小时运行一次呢?
1-59/30 * * 1-5 /mnt/myHdd/myscript.py
编辑:抱歉,澄清一下,它不必精确地每 30 分钟...该脚本只是将图片从我的手机下载到我的 rpi,我希望它在我在家的工作日期间经常运行(即 1630/1700 之后),然后是周末的一般“醒着时间”的每个小时。
答案1
请看我的编辑在这个答案的最后。
- 这个答案“接近”您的第一个要求:
*/30 16-23,0 * * 1-5
翻译:“At every 30th minute past every hour from 16 through 23 and 0 on every day-of-week from Monday through Friday.”
第一个答案错过了,因为它不是每半小时运行一次。也许你可以通过sleep
在代码中放置 a 来解决这个问题:
time.sleep( 1800 )
- 这个答案“接近”您的第一个要求:
0,*/30 16-23,0 * * 1-5
翻译:“At minute 0 and every 30th minute past every hour from 16 through 23 and 0 on every day-of-week from Monday through Friday.”
第二个答案未命中,因为它在 16:00 运行,比您希望开始的时间提前了 30 分钟。如果这不重要的话,这可能“更接近”符合您所说的要求。如果确实很重要,并且您可以等到 17:00,那么对时间表进行简单的更改即可解决此问题:
0,*/30 17-23,0 * * 1-5
- 这是您的第二个要求的答案:
0 8-23,0 * * 6-7
编辑:我有一个心理障碍。我突然想到有一个精确的回答你的问题。它有 3 个
crontab
条目,而不是只有 2 个:
0,*/30 17-23,0 * * 1-5 /mnt/myHDD/myscript.py
30 16 * * 1-5 /mnt/myHDD/myscript.py
0 8-23,0 * * 6-7 /mnt/myHDD/myscript.py
答案2
我会设置两个 cron 作业:
# Mon-Fri every "half hour" from 16:30 until 23:30 and also at 12:30am and 12:59am
30,59 0,16-23 * * 1-5 /mnt/myHDD/myscript.py
# Weekends, every hour from 8am until 11pm
0 8-23 * * 0,6 /mnt/myHDD/myscript.py
这里最大的近似值是我在工作日工作中使用了第 30 和 59 分钟,因此您在 16:00 没有跑步。因此,每周的工作时间间隔为 29 分钟和 31 分钟。如果有问题的话就分开那进入二:
# Mon-Fri at 16:30
30 16 * * 1-5 /mnt/myHDD/myscript.py
# Mon-Fri every half hour from 17:00 until 23:30 and also at midnight and 12:30am
0,30 0,17-23 * * 1-5 /mnt/myHDD/myscript.py
我将分钟硬编码为不同的最小时和过去 30 点,或过去 30 点和过去 59 点,但如果存在竞争性作业,您可以选择任何间隔(5 和 35 等)。
周一至周五的入场时间为午夜和中午 12:30;如果您0
从小时字段中删除,那么最后一次运行将在晚上 11:30。同样,如果这是一个问题,请将该条目拆分为专门在午夜运行。