1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| 问题: 因为 cron 表达式 */7 只会在能被 7 整除的时候执行,举例来说 17:56 和 18:00 的时候都会执行,这可不是每 7 分钟运行一次的意思
解决方案:
1.穷举法 一周有七天列出每日的执行时间点
#周一 0-56/7 0-21/7 * * 1 command 3-59/7 1-22/7 * * 1 command 6-55/7 2-23/7 * * 1 command 2-58/7 3-17/7 * * 1 command 5-54/7 4-18/7 * * 1 command 1-57/7 5-29/7 * * 1 command 4-53/7 6-20/7 * * 1 command #周二 2-58/7 0-21/7 * * 2 command 5-54/7 1-22/7 * * 2 command 1-57/7 2-23/7 * * 2 command 4-53/7 3-17/7 * * 2 command 0-56/7 4-18/7 * * 2 command 3-59/7 5-29/7 * * 2 command 6-55/7 6-20/7 * * 2 command #周三 4-53/7 0-21/7 * * 3 command 0-56/7 1-22/7 * * 3 command 3-59/7 2-23/7 * * 3 command 6-55/7 3-17/7 * * 3 command 2-58/7 4-18/7 * * 3 command 5-54/7 5-29/7 * * 3 command 1-57/7 6-20/7 * * 3 command #周四 6-55/7 0-21/7 * * 4 command 2-58/7 1-22/7 * * 4 command 5-54/7 2-23/7 * * 4 command 1-57/7 3-17/7 * * 4 command 4-53/7 4-18/7 * * 4 command 0-56/7 5-29/7 * * 4 command 3-59/7 6-20/7 * * 4 command #周五 1-57/7 0-21/7 * * 5 command 4-53/7 1-22/7 * * 5 command 0-56/7 2-23/7 * * 5 command 3-59/7 3-17/7 * * 5 command 6-55/7 4-18/7 * * 5 command 2-58/7 5-29/7 * * 5 command 5-54/7 6-20/7 * * 5 command #周六 3-59/7 0-21/7 * * 6 command 6-55/7 1-22/7 * * 6 command 2-58/7 2-23/7 * * 6 command 5-54/7 3-17/7 * * 6 command 1-57/7 4-18/7 * * 6 command 4-53/7 5-29/7 * * 6 command 0-56/7 6-20/7 * * 6 command #周日 5-54/7 0-21/7 * * 7 command 1-57/7 1-22/7 * * 7 command 4-53/7 2-23/7 * * 7 command 0-56/7 3-17/7 * * 7 command 3-59/7 4-18/7 * * 7 command 6-55/7 5-29/7 * * 7 command 2-58/7 6-20/7 * * 7 command
2. 每分钟计算时间能否被7整除
* * * * * [ $(($(date +\%s) / 60 \% 7 )) -eq 0 ] && ( command )
|