我想安排一个任务在一个特定月份的一个星期的指定date之前运行几秒,几分钟,几小时,几天或几周。 例子是:
我很乐意在特定的日子里设置cron / at来运行作业,并且意识到如果我想运行这些types的计划,我可能不得不与cron一起运行脚本。
有没有人有我如何能做到这一点的例子?
对于你的第一个例子,在这个月的最后一个星期二的前7天的上午8点,我会这样做:
0 8 * * 2 [[ $(date +%m) -eq $(date -d +7days +%m) ]] && [[ $(date +%m) -ne $(date -d +14days +%m) ]] && myscript
那么每个星期二上午8点( 0 8 * * 2
)运行,然后说“如果从现在开始的7天与本月相同”(即,这不是月的最后一个星期二)和“如果从现在开始的14天与本月不同“(即,这是本月的第二个星期二),则运行myscript
。
这在技术上可能会更有效率 – 例如,您知道本月的倒数第二个星期二不能成为本月的第一个星期 – 但这只会让人更难理解。 :)另外,根据确切的shell cron运行等等,可能需要一些引用( +%m
可能需要"+%m"
),或者您可能需要跳过百分号(即+%m
可能需要+\%m
)。
把这个技巧推广到其他日子,并提前组合,作为读者的练习。