每天安排 python 脚本,在特定时间之间,每 X 分钟

每天安排 python 脚本,在特定时间之间,每 X 分钟

我的 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

请看我的编辑在这个答案的最后。

  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 )
  1. 这个答案“接近”您的第一个要求:
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
  1. 这是您的第二个要求的答案:
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。同样,如果这是一个问题,请将该条目拆分为专门在午夜运行。

相关内容