是否可以在每月5号之后的第一个星期日执行crontab作业?

时间:2020-04-14 19:15:06

标签: cron

我想在每月的5号之后的第一个星期日运行crontab作业吗?我将如何单独在crontab中做到这一点?

我知道要在每个星期日运行,我需要执行以下操作:

0 0 * * SUN

我认为以下内容将在一个月的5号到11号之间的所有天以及一个月中的所有星期日

0 0 5-11 * Sun

但是我只想在星期天的日期介于5日和11日(每月5日或之后的第一个星期日)之间进行跑步

我想我可以在代码中添加如下所示的内容,但我希望尽可能在crontab文件中单独添加

import datetime
import os
import sys
dt = datetime.datetime.today()
print(dt.day)

if 5 <= dt.day <= 11:
    os.system('python runner.py')
else:
    print("not the second Sunday of the month")
    sys.exit()

1 个答案:

答案 0 :(得分:1)

假设您的cron与我的系统(Ubuntu 19.10)上的cron类似,则不能直接使用时间和日期字段来完成它,但是您可以将该测试作为crontab中shell命令的一部分包含在内。 crontab(5) man page有一个示例:

   # Run on every second Saturday of the month
   0 4 8-14 * *    test $(date +\%u) -eq 6 && echo "2nd Saturday"

对您来说,这就是

0 0 5-11 * *    test $(date +\%u) -eq 7 && /run/my/command