我希望脚本从第 40 分钟开始每 40 分钟运行一次。
这意味着:
00:40, 01:20, 02:00, 02:40, 03:20...
所以我在 cron 中做了这个条目:
*/40 * * * * /path/to/script/foo.sh
不幸的是,该脚本每 40 分钟运行一次:
00:40, 01:40, 02:40...
我打算每 25 分钟运行一次的脚本也是如此。
我在这里遗漏了什么吗?
<小时/>答案
好吧,以防万一您碰巧遇到同样的问题
我是这样解决的:
# 40mins-interval
40 0 * * * /path/foo.sh (0)
0,40 2-22/2 * * * /path/foo.sh (2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22)
20 1-23/2 * * * /path/foo.sh (1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23)
# 25mins-interval
25,50 0 * * * /path/foo.sh (0)
0,25,50 5-20/5 * * * /path/foo.sh (5, 10, 15, 20)
15,40 1-21/5 * * * /path/foo.sh (1, 6, 11, 16, 21)
5,30,55 2-22/5 * * * /path/foo.sh (2, 7, 12, 17, 22)
20,45 3-23/5 * * * /path/foo.sh (3, 8, 13, 18, 23)
10,35 4-19/5 * * * /path/foo.sh (4, 9, 14, 19)
注释:
1. 此时间表中仍会存在冲突(即:查看两个时间间隔均在第 0 分钟和第 10 分钟运行的时间表)。
2. 脚本不会按照今天上次运行到第二天的精确间隔运行(即:25 分钟间隔今天@23:45 结束,第二天@00:25 开始)。
最佳答案
它总是只分割当前小时。
40/40 = 1,因此它每 40 分钟运行一次。
*/5 会执行 5、10、15...
您应该选择更大的间隔。
对于 25 分钟的间隔,执行 */30 次;对于 40 分钟的间隔,每 60 分钟执行一次 */30。
否则为您的脚本设置两个 crontab:
0,40 */2 * * * /path/to/script/foo.sh
20 1,3,5,7,9,11,13,15,17,19,21,23 * * * /path/to/script/foo.sh
关于cron - 如何设置 cron 每 40 分钟/25 分钟运行一次我的脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8181949/