-1

我有一个表单,用户可以选择何时运行脚本。我有fields {time,day of week, first/last}。现在当用户选择例如:每个第一个星期一上午 10:45 - 这意味着在每个月的第一个星期一运行脚本,我如何将其转换为 cron 作业。

谢谢。

4

1 回答 1

3

不幸的是,crontab 条目中的日期和星期几字段是 ORed 在一起的,而不是 ANDed。所以你不能真的只用 crontab 字段来做一个“每月的第一个星期一”;你需要额外的逻辑。你可以这样做:

min hr 1-7 * * [ `date +%w` -eq 1 ] && first-monday.sh

查找工作日的最后一个实例有点棘手,因为它取决于该月有多少天:

min hr 25-31 1,3,5,7,8,10,12 * [ `date +%w` -eq 5 ] && last-friday.sh
min hr 24-30 4,6,9,11        * [ `date +%w` -eq 5 ] && last-friday.sh
min hr 22-28 2               * [ `date +%w` -eq 5 ] && last-friday.sh

在 2 月 29 日为星期五的闰年,最后一个条目实际上将在 22 日运行脚本,但由于 cron 作业无法指定年份,所以这几乎是你所能得到的。

于 2013-05-11T15:11:25.903 回答