使用cron和一个脚本,我怎么能得到一些东西,例如,在每个月的最后一个星期二的前十天上午10点?

我想安排一个任务在一个特定月份的一个星期的指定date之前运行几秒,几分钟,几小时,几天或几周。 例子是:

  • 上午8点,每个月的最后一个星期二的前7天
  • 上午10点,每个月的第二个星期六前11天
  • 在每个月的最后一个星期五的前三天的下午六点

我很乐意在特定的日子里设置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 )。

把这个技巧推广到其他日子,并提前组合,作为读者的练习。