特定时间之间每3分钟的Cron表达式

特定时间之间每3分钟的Cron表达式,cron,scheduler,cron-task,nodejs-server,node-schedule,Cron,Scheduler,Cron Task,Nodejs Server,Node Schedule,以下是场景:- 我想在我的NodeJs应用程序中运行一个特定的函数,为此我使用NodeScheduler 我知道我可以用这个表达 */3 8-15*** 在上午8点到下午3点之间每3分钟运行一次,但我想在上午8:30到下午3:15之间运行一次,但是我所做的Cron表达式肯定是错误的 30-15/3 8-15*** 有人知道在这种情况下,什么是正确的cron表达式吗?正常的cron不会给您提供那种级别的表达能力,但是没有什么可以阻止您在条目的命令部分设置进一步的限制: */3 8-15 * * *

以下是场景:- 我想在我的NodeJs应用程序中运行一个特定的函数,为此我使用NodeScheduler

我知道我可以用这个表达

*/3 8-15***

在上午8点到下午3点之间每3分钟运行一次,但我想在上午8:30到下午3:15之间运行一次,但是我所做的Cron表达式肯定是错误的

30-15/3 8-15***


有人知道在这种情况下,什么是正确的cron表达式吗?

正常的
cron
不会给您提供那种级别的表达能力,但是没有什么可以阻止您在条目的命令部分设置进一步的限制:

*/3 8-15 * * * [[ 1$(date +\%H\%M) -ge 10830 ]] && [[ 1$(date +\%H\%M) -le 11515 ]] && payload
实际上,这将在上午8点到下午4点之间每隔三分钟运行
cron
作业本身,但只有在当前时间在上午8:30到下午3:15之间时,才会调用有效负载(执行实际工作的脚本)

1
放在时间前面只是一个技巧,可以避免将以零开始的数字视为八进制的问题


事实上,我有一个脚本
withinTime.sh
,它被证明对这类事情很有用:

usage() {
    [[ -n "$1" ]] && echo "$1"
    echo "Usage: withinTime <hhmmStart> <hhmmEnd>"
}

validTime() {
    [[ "$1" =~ ^[0-9]{4}$ ]] || return 1  # Ensure 0000-9999.
    [[ $1 -le 2359 ]] || return 1         # Ensure 0000-2359.
    return 0
}

# Parameter checking.

[[ $# -ne 2 ]] && { usage "ERROR: Not enough parameters"; exit 1; }
validTime "$1" || { usage "ERROR: invalid hhmmStart '$1'"; exit 1; }
validTime "$2" || { usage "ERROR: invalid hhmmEnd '$2'"; exit 1; }

now="1$(date +%H%M)"
[[ ${now} -lt 1${1} ]] && exit 1  # If before start.
[[ ${now} -gt 1${2} ]] && exit 1  # If after end.

# Within range, flag okay.
exit 0
*/3 8-15 * * * /home/pax/bin/withinTime.sh 0830 1515 && payload