解决crontab让脚本7分钟执行一次的问题


解决crontab让脚本7分钟执行一次的问题

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 )