我希望能够配置这样的东西。
答案 0 :(得分:15)
可以以一种棘手的方式完成。
您需要为该范围创建三个单独的cron
个作业,所有作业都运行相同的代码(在这种情况下为X
):
"0 7 29,30 6 * X"
)。"0 7 * 7-11 * X"
)。"0 7 1-30 12 * X"
)之外的所有人。这会给你:
# Min Hr DayOfMonth Month DayOfWeek Command
# --- -- ---------- ----- --------- -------
0 7 29,30 6 * X
0 7 * 7-11 * X
0 7 1-30 12 * X
然后确保在2010年6月29日之前发表评论。您可以在12月31日添加最终cron
个工作,通过电子邮件向您发送需要禁用的工作。
如果年份不是2009年,您可以修改X
立即退出。
if [[ "$(date +%Y)" != "2009" ]] ; then
exit
fi
如果忘记禁用这些作业,那就无所谓了。
答案 1 :(得分:4)
是的,主要是。有些cron实现支持多年,有些则不支持,所以我们假设你的实现没有。另外,我假设这个作业只是由cron守护进程运行,所以我们可以使用execute位来确定cron是否应该运行这个作业。
请注意,您需要将脚本保留为不可执行文件,直到您希望它运行为止。
以下cron表达式将执行您想要的操作(每天,包括周末)。根据需要调整:
# Make the job executable on 29 June.
0 6 29 6 * chmod +x /path/to/my/job/script
# Run the job between June and December, only if it's executable.
0 7 * 6-12 * test -x /path/to/my/job/script && /path/to/my/job/script
# Disable execution after 30 December.
0 8 30 12 * chmod -x /path/to/my/job/script
答案 2 :(得分:2)
我通常喜欢在程序运行时保持逻辑。您可能会考虑设置一个每天运行脚本的cron作业,然后让脚本自行决定是否应该执行任何有用的操作。当最后一个有用的日期(12月30日)过去后,您的脚本可以从crontab中删除自己。在脚本中,您可以使用描述所做操作和原因所需的所有注释来设置逻辑。
如果你的工作是二进制程序,你可以设置一个run_script,在调用程序之前执行此计划过滤工作。
答案 3 :(得分:-1)
您可以使用它来生成以特定间隔运行的crontab:
http://www.robertplank.com/cron/
或者这个
http://www.webmaster-toolkit.com/cron-generator.shtml
一个解决方案是设置6个crons,每个月1个,每个月每天早上7点运行。
这可能是最简单的方法,下一个就是编写脚本。
答案 4 :(得分:-1)
不,afaik,你做不到。
cron字段分别包含分钟,小时,月,日和星期的值。
10 5 10 * * means run at 5:10 on every 10th of every month.
10 5 * 12 * means run at 5:10 on every day in december
10 5 * * 1 means run at 5:10 every Monday
您可以在一系列特定月份运行它,因为crontab格式确实接受范围。对于月份字段,4月到12月将是4-12。但这并没有考虑到你希望将此限制在2009年。
没有机制来设置cronjob的开始和停止日期。当然,你总是可以编写脚本。每天运行一个cronjob并检查当前日期是否在30/12之前。如果它是31/12使其自行删除。或者更深思熟虑的东西。
的crontab
0 7 * * 6-12 command_X
会做你想要的部分,但它会从6月1日开始,一直持续到12月31日。跳过6月和12月31日的第一部分必须在X命令中编写脚本。