我希望能够配置这样的东西。
- 我想从 2009 年 6 月 29 日到 2009 年 6 月 29 日至 2009 年 12 月 30 日每天早上 7 点运行作业“X”。将当前日期视为 4/4/2009。
最佳答案
它可以以一种棘手的方式完成。
你需要三个独立的cron
该范围内的所有作业都运行相同的代码(在本例中为 X
):
- 6 月 29 日和 30 日 (
"0 7 29,30 6 * X"
)。 - 7 月到 11 月 (
"0 7 * 7-11 * X"
) 的每一天。 - 除了 12 月的最后一天 (
"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 日到来之前将它们注释掉。您可以添加最后一个 cron
12 月 31 日的工作,通过电子邮件通知您需要将其禁用。
或者你可以修改X
如果年份不是 2009 年,则立即退出。
if [[ "$(date +%Y)" != "2009" ]] ; then
exit
fi
那么即使您忘记禁用作业也没关系。
关于linux - unix/linux 中的 cron 表达式是否允许指定确切的开始和结束日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/704927/