我正在为一项Cron Expression工作,该工作必须在工作日中从上午7.30到上午8.20(含)每10分钟运行一次。
我使用的触发器:- 0 30/10 7-9? *周日,周一,周二,周三,周四*
问题是否也适用于8.20以上?我们可以将其限制为特定的分钟数或结束时间吗?就像7:30-8:20
答案 0 :(得分:1)
有些事情您无法在单个表达式中完成,您可能会考虑使用两个表达式:
# Example of job definition:
# .--------------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
# This runs on 7:30, 7:40, 7:50
30/10 7 * * 1-5 command
# This runs on 8:00, 8:10, 8:20
0-20/10 8 * * 1-5 command
另一种尝试的方法是使用测试。
# Example of job definition:
# .--------------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
*/10 7,8 * * 1-5 testcmd && command
testcmd
是如下所示的可执行脚本:
#!/usr/bin/env bash
hours=$(date "+%H")
minutes=$(date "+%M")
(( hours == 7 && minutes >= 30)) || (( hours == 8 && minutes <= 20 ))
此技巧的其他示例可以在这里找到: