每日,每周和每月克伦工作

最近我写了一个简单的小脚本来备份一个目录到S3。 我的目标是运行每日,每周和每月的备份,根据S3中的频率有不同的保留规则。

除了一个例外,一切都很好。 我每周工作的cron作业。 这是crontab:

0 3 1 * * /usr/s3_sync_dir /dropbox MONTHLY 0 2 2-31 * THU /usr/s3_sync_dir /dropbox WEEKLY 0 3 2-31 * * /usr/s3_sync_dir /dropbox DAILY 

所以MONTHLY的工作每个月都会在凌晨3点运行。 如果不是第一天,那么每周四应该在凌晨2点运行。 DAILY每天运行的不是第一次。 这个在线validation器确认每周四应该运行。

任何人都有想法,为什么我的每周工作每周上class?

这是在Ubuntu 16.04.2 LTS。

从手册(man 5 crontab)

注意:命令执行的date可以由两个字段指定 – date和星期几。 如果两个字段都受限制(即不是*),则当任一字段与当前时间匹配时,将运行该命令。 例如,“30 4 1,15 * 5”会导致命令在1月15日凌晨4点30分运行。
每个月加上每个星期五。 但是,可以通过向命令添加一个testing来获得所需的结果(请参见下面的示例CRON FILE中的最后一个示例)。

我想你应该把你的2-31变成*

要么

你可以使用@daily,@weekly和@monthly。

要么

你可以在/etc/cron.daily,/etc/cron.weekly,/etc/cron.monthly链接到你的脚本。