Crontab 表达式在跨越午夜的时间范围内运行一次

Crontab 表达式在跨越午夜的时间范围内运行一次

是否可以想出一个在 2015 年 10 月 12 日 19:00 至 2015 年 10 月 13 日 07:00 之间每五分钟运行一次的 cron 表达式?

答案1

# Minute   Hour   Day of Month       Month          Day of Week        Command    
# (0-59)  (0-23)     (1-31)    (1-12 or Jan-Dec)  (0-6 or Sun-Sat)
0,5,10,15,20,25,30,35,40,45,50,55 19,20,21,22,23 12 10 * command
0,5,10,15,20,25,30,35,40,45,50,55 0,1,2,3,4,5,6 13 10 * command
0 7 13 10 * command

答案2

嗯,不是一个,但我认为最接近:

*/5 19-23 12 10 * test $(date +%Y) -eq 2015 && /runme.sh
*/5 0-6   13 10 * test $(date +%Y) -eq 2015 && /runme.sh
0   7     13 10 * test $(date +%Y) -eq 2015 && /runme.sh

我的建议是将日期检查放入您的脚本(runme.sh)并简单地放入 crontab:

*/5 * 12-13 10 * /runme.sh

然后像这样启动 runme.sh:

#!/bin/bash
test $(date +%Y) -eq 2015 || exit 0
test $(date %d%H%M) -ge 121900 || exit 0
test $(date %d%H%M) -le 130700 || exit 0

相关内容