这个 cron 作业什么时候执行?

When does this cron job get executed?

我在 crontab 中看到了这个 cron 设置,我很好奇脚本实际执行的时间。

8 10 * * 6 expr `date +\%W` \% 2 == 1 >/dev/null || /path/to/script/scriptToRun.sh

如此挑剔的语法...

8 10 * * 6 expr `date +\%W` \% 2 == 1 >/dev/null || /path/to/script/scriptToRun.sh

首先,cronjob:

 +---------------- minute (0 - 59)
 |  +------------- hour (0 - 23)
 |  |  +---------- day of month (1 - 31)
 |  |  |  +------- month (1 - 12)
 |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
 |  |  |  |  |
 *  *  *  *  *  command to be executed
 8 10  *  *  6

所以在这种情况下,这意味着 cronjob 在每个星期六 10.08. 执行

然后,man date 说:

%W

week number of year, with Monday as first day of week (00..53)

$(date +\%W) \% 2 == 1 >/dev/null表示:如果周数不是2的倍数,则输出到dev/null。否则,正常进行。

因此脚本会在 每隔一个星期六的 10.08 执行。