我想在每月的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()
答案 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